《劍指Offer》題目:合並兩個排序的鏈表
阿新 • • 發佈:2017-06-10
合成 sorted 合並 邊界情況 logs pub st2 next null
題目描述:輸入兩個單調遞增的鏈表list1,list2,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。
題目分析:
1.對於鏈表題目,首先考慮邊界情況,即鏈表為空的情況,提升代碼的魯棒性。
2.合並完一個結點後,剩余的鏈表仍然是有序的,再合並下一個結點時的過程是一樣的,這是一種遞歸的思想,因此采用遞歸來合並。
Java代碼:
public class MergeSortedList { public ListNode Merge(ListNode list1,ListNode list2) { if(list1 == null) returnlist2; if(list2 == null) return list1; ListNode preNodeList2 = null; if(list1.val < list2.val){ preNodeList2 = list1; preNodeList2.next = Merge(list1.next, list2); } else{ preNodeList2 = list2; preNodeList2.next= Merge(list1, list2.next); } return preNodeList2; } public static void main(String[] args){ } }
《劍指Offer》題目:合並兩個排序的鏈表