Iterative:
1 /**2 * Definition for singly-linked list.3 * struct ListNode {4 * int val;5 * ListNode *next;6 * ListNode (int x): Val (x), Next (NULL) {}7 * };8 */9 classSolution {Ten Public: OneListNode *mergetwolists (ListNode *l1, ListNode *L2) { A if(!L1)returnL2; - if(!L2)returnL1; -ListNode *result =NewListNode (0); theListNode *runner =result; - while(L1 | |L2) { - intTMP1 = Int_max, TMP2 =Int_max; - if(L1) { +TMP1 = l1->Val; - } + if(L2) { ATMP2 = l2->Val; at } - if(Tmp1 <TMP2) { -Runner->next =L1; -L1 = l1->Next; -}Else { -Runner->next =L2; inL2 = l2->Next; - } toRunner = runner->Next; + } - returnResult->Next; the } *};
Recursive:
1 /**2 * Definition for singly-linked list.3 * struct ListNode {4 * int val;5 * ListNode *next;6 * ListNode (int x): Val (x), Next (NULL) {}7 * };8 */9 classSolution {Ten Public: OneListNode *mergetwolists (ListNode *l1, ListNode *L2) { A if(!L1)returnL2; - if(!L2)returnL1; -ListNode *result; the if(L1->val < l2->val) { -result =L1; -Result->next = Mergetwolists (l1->Next, L2); -}Else { +result =L2; -Result->next = mergetwolists (L1, l2->next); + } A returnresult; at } -};
Leetcode–refresh–merge Sorted Lists