合并两个有序链表——记录(C++)

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(l1==nullptr&&l2==nullptr)
        {
            return nullptr;
        }
        ListNode* l3 = new ListNode();
        ListNode* temp =l3;
      while(l1!=nullptr||l2!=nullptr)
      {
          if(l1!=nullptr&&l2!=nullptr)
          {   
            if(l1->val<=l2->val)
            { 
                l3->val=l1->val;
                l1=l1->next;         
            }
            else
            { 
                l3->val=l2->val;
                l2=l2->next;
            }
             l3->next=new ListNode();
                l3=l3->next;
            }
          else if(l2==nullptr&&l1!=nullptr)
          {
            l3->val=l1->val;
            l1=l1->next;
            if(l1!=nullptr)
            {
                l3->next=new ListNode();
                l3=l3->next;
            }
          }
          else
          {
            l3->val=l2->val;
            l2=l2->next;
              if(l2!=nullptr)
            {
                l3->next=new ListNode();
                l3=l3->next;
            }
          }
      }
       l3=nullptr;
        return temp;
    }
};

菜鸟再次暴力求解。

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if (l1 == nullptr) {
            return l2;
        } else if (l2 == nullptr) {
            return l1;
        } else if (l1->val < l2->val) {
            l1->next = mergeTwoLists(l1->next, l2);
            return l1;
        } else {
            l2->next = mergeTwoLists(l1, l2->next);
            return l2;
        }
    }
};

也想过用递归,不过没能做出来。

还是要多练。

上一篇:【leetcode】另一棵树的子树 c++


下一篇:深刻理解后序遍历二叉树