題目:
輸入兩個遞增排序的鏈表策吠,合并這兩個鏈表并使鏈表中的結(jié)點仍然是按照遞增排序的较屿。
思路:
假若有l(wèi)ist1:{1速妖,3抱怔,5}
list2:{2择克,4瞭稼,6}
1)先比較1和2杉畜,明顯是1小湿弦。所以list1的1結(jié)點為合并鏈表的頭結(jié)點裁良。合并鏈表為{1}
2)接下來比較list1:{3凿将,5} 和 list2:{2,4价脾,6}鏈表牧抵,明顯2比3小,將2加入到合并的鏈表彼棍,所以合并后的鏈表為{1灭忠,2}膳算。
3)重復(fù)類似2)的步驟,即每次從兩個鏈表中選出val較小的結(jié)點弛作,并拼接到合并鏈表涕蜂。
此處使用遞歸代碼更加精簡
- 注:考慮鏈表為空的特殊情況!
實現(xiàn):
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if (list1 == null){
return list2;
} else if (list2 == null){
return list1;
}
ListNode pMergeHead = null;
if (list1.val <= list2.val) {
pMergeHead = list1;
pMergeHead.next = Merge(list1.next, list2);
} else {
pMergeHead = list2;
pMergeHead.next = Merge(list1, list2.next);
}
return pMergeHead;
}
}