Leetcode(7)合併兩個有序連結串列
阿新 • • 發佈:2018-11-16
題目描述
將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
解題思路
單項有序連結串列嘛,無非是指標的操作,兩個有序連結串列,將其合併為一個有序連結串列,只需逐個判斷其大小,然後操作指標即可
class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *l = new ListNode(-1), *curent = l; while (l1 && l2) { if (l1->val < l2->val) { curent->next = l1; l1 = l1->next;curent = curent->next; } else { curent->next = l2; l2 = l2->next;curent = curent->next; } } curent->next = l1 ? l1 : l2; return l->next; } };
第二種解題思路
利用遞迴的方式,這個有點難,參考了下別人的程式碼
class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1) return l2; if (!l2) return l1; if (l1->val < l2->val) { l1->next = mergeTwoLists(l1->next, l2); return l1; } else { l2->next = mergeTwoLists(l1, l2->next); return l2; } } };