zoukankan      html  css  js  c++  java
  • 腾讯//合并两个有序链表

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

    示例:

    输入: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;
        }
    };
  • 相关阅读:
    三目运算符不易发现的错误
    [转]理解C# 4 dynamic(1)
    [转]C# and the using Statement in 3 seconds and a bug in Reflector
    异步上传文件多种方式归纳
    JQuery的两个each方法的注意点
    CRM2011 concurrency问题及解决方案
    [转]Android与电脑局域网共享之:Samba Client
    [转]Android与电脑局域网共享之:Samba Server
    [转]SQL2005后的ROW_NUMBER()函数的应用
    Javascript中布尔运算符的高级应用
  • 原文地址:https://www.cnblogs.com/strawqqhat/p/10602474.html
Copyright © 2011-2022 走看看