• 腾讯//合并两个有序链表


    将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

    示例:

    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            ListNode temp1 = l1;
            ListNode temp2 = l2;
            
            ListNode ret = new ListNode(0);
            
            ListNode ret1 = ret;
            while(temp1!=null&&temp2!=null){
                if(temp1.val>temp2.val){
                    ret.next = temp2;
                    ret = ret.next;
                    temp2 = temp2.next;
                }else{
                    ret.next = temp1;
                    ret = ret.next;
                    temp1 = temp1.next;
                }
            }
            if(temp1==null&&temp2!=null)
                ret.next = temp2;
            if(temp2==null&&temp1!=null)
                ret.next = temp1;
            return ret1.next;
        }
    }

    递归

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            ListNode temp1 = l1;
            ListNode temp2 = l2;
            ListNode ret = getResult(temp1, temp2);
            return ret;
        }
        public ListNode getResult(ListNode t1, ListNode t2){
            ListNode t0 = new ListNode(0);
            ListNode head = t0;
            if(t1 == null) return t2;
            if(t2 == null) return t1;
            if(t1.val>t2.val){
                t0.next = t2;
                t0 = t0.next;
                t0.next = getResult(t1, t2.next);
            }else{
                t0.next = t1;
                t0 = t0.next;
                t0.next = getResult(t1.next,t2);
            }
            return head.next;
        }
    }
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
            if(l1 == NULL)
                return l2;
            else if(l2 == NULL)
                return l1;
            
            ListNode* pMergeHead = NULL;
            if(l1->val < l2->val){
                pMergeHead = l1;
                pMergeHead->next = mergeTwoLists(l1->next, l2);
            }else{
                pMergeHead = l2;
                pMergeHead->next = mergeTwoLists(l1, l2->next);
            }
            return pMergeHead;
        }
    };
  • 相关阅读:
    Spring Security 4
    JPA查询
    改进的冒泡算法
    Create User
    COM调用 – VB、PB
    J-Link clone问题
    修复山寨版的J-Link
    C# Web版报表
    HTML/CSS/Javascript代码在线压缩、格式化(美化)工具
    eclipse中字母大小写转换快捷键
  • 原文地址:https://www.cnblogs.com/strawqqhat/p/10602474.html
Copyright © 2020-2023  润新知