简洁易懂讲清原理,讲不清你来打我~

 

 

详细思路

同时遍历两个链表,小的放到新链表结尾,一样大取第一个,一条为空时走另一条,给三条链表哑结点

 
精确定义
cur1第一条链表已经遍历到某个节点
cur2第二条链表已经遍历到某个节点
cur3第三条链表已经合成到某个节点
dummy123

 

 

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode*dummy1=new ListNode(0,l1);
        ListNode*dummy2=new ListNode(0,l2);
        ListNode*dummy3=new ListNode(0,nullptr);
        ListNode*cur1=dummy1,*cur2=dummy2,*cur3=dummy3;
        while(cur1->next||cur2->next){
            if(cur1->next&&cur2->next){
                if(cur1->next->val<=cur2->next->val){
                    cur3->next=new ListNode(cur1->next->val);
                    cur3=cur3->next;
                    cur1=cur1->next;
                }
                else{
                    cur3->next=new ListNode(cur2->next->val);
                    cur3=cur3->next;
                    cur2=cur2->next;
                }
            }
            else if(cur1->next==nullptr){
                cur3->next=new ListNode(cur2->next->val);
                cur3=cur3->next;
                cur2=cur2->next;                
            }
            else if(cur2->next==nullptr){
                cur3->next=new ListNode(cur1->next->val);
                cur3=cur3->next;
                cur1=cur1->next;                
            }
        }
        return dummy3->next;
    }
};

 

posted on 2021-07-26 09:33  offer快到碗里来~  阅读(88)  评论(0)    收藏  举报