1. 程式人生 > >《劍指Offer》題目:合並兩個排序的鏈表

《劍指Offer》題目:合並兩個排序的鏈表

合成 sorted 合並 邊界情況 logs pub st2 next null

題目描述:輸入兩個單調遞增的鏈表list1,list2,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。

題目分析:

1.對於鏈表題目,首先考慮邊界情況,即鏈表為空的情況,提升代碼的魯棒性。

2.合並完一個結點後,剩余的鏈表仍然是有序的,再合並下一個結點時的過程是一樣的,這是一種遞歸的思想,因此采用遞歸來合並。

Java代碼:

public class MergeSortedList {

    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1 == null) return
list2; 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》題目:合並兩個排序的鏈表