1. 程式人生 > >劍指offer之合併有序連結串列

劍指offer之合併有序連結串列

題目

輸入兩個單調遞增的連結串列,輸出兩個連結串列合成後的連結串列,當然我們需要合成後的連結串列滿足單調不減規則。

思路

歸併的思路,注意不要開闢新的記憶體,直接在原來連結串列上合併,剛開始被這個坑了。。。。注意邊界條件的判斷。

AC程式碼

class Solution {
  public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        if(pHead1 == nullptr && pHead2 == nullptr) {
            return nullptr;
        }
else if(pHead1 == nullptr && pHead2 != nullptr) { return pHead2; } else if(pHead1 != nullptr && pHead2 == nullptr) { return pHead1; } auto p1 = pHead1, p2 = pHead2; auto head = p1->val < p2->val ? p1 : p2; auto
p = head; if(p1->val < p2->val) { p1 = p1->next; } else { p2 = p2->next; } while(p1 != nullptr && p2 != nullptr) { if(p1->val < p2->val) { p->next = p1; p1 = p1->
next; } else { p->next = p2; p2 = p2->next; } p = p->next; } while(p1 != nullptr) { p->next = p1; p1 = p1->next; } while(p2 != nullptr) { p->next = p2; p2 = p2->next; } return head; } };