輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。
思路:先比較鏈表1的頭節點的值和鏈表2的頭節點的值,將小的做爲新鏈表的頭節點,接下來繼續比較。。(遞歸)
例如圖:1比2小,作爲新鏈表的頭部,繼續比較2和3。。。
當list1爲null時,合併後即爲list2。同樣,當list2爲null時,合併後即爲list1。
/**
* @author yuan
* @date 2019/2/12
* @description
*/
public class 合併兩個排序的鏈表 {
static class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public ListNode Merge(ListNode list1,ListNode list2) {
if (list1 == null) {
return list2;
}
if (list2 == null) {
return list1;
}
ListNode head = null;
if (list1.val < list2.val) {
head = list1;
head.next = Merge(list1.next, list2);
} else {
head = list2;
head.next = Merge(list1, list2.next);
}
return head;
}
}