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

【劍指offer】合併有序連結串列

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

*思路:假設兩個連結串列的當前結點為n1(list1),n2(list2)比較連結串列結點值的大小,如果n1.val<=n2.val,則合併後的連結串列應該為 n1->Merge(n1.next, n2). 反之,如果n1.val>n2.val, 則合併後的結果應該為n2->Merge(n1, n2.next). 所以遞迴實現的程式碼如下:

 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
5 6 ListNode(int val) { 7 this.val = val; 8 } 9 }*/ 10 public class Solution { 11 public ListNode Merge(ListNode list1,ListNode list2) { 12 if(list1 == null){ 13 return list2; 14 } 15 if(list2 == null){ 16 return list1; 17 }
18 if(list1.val <= list2.val){ 19 list1.next = Merge(list1.next, list2); 20 return list1; 21 }else{ 22 list2.next = Merge(list1, list2.next); 23 return list2; 24 } 25 } 26 }