根據題意,可得出,該題目要求兩個單增的鏈表合成一條單增的鏈表。函數
鏈表一:1→5→9→11spa
鏈表二:2→4→10→12指針
新鏈表爲:1→2→4→5→9→10→11→12code
定義兩個鏈表的指針;比較兩個鏈表的頭結點,讓較小的頭結點做爲新鏈表的頭結點;遞歸比較兩個鏈表的其他節點,讓較小的節點做爲上一個新節點的後一個節點。具體實現方法以下:blog
class Solution { public ListNode Merge(ListNode pHead1, ListNode pHead2) { // write code here //前兩部聲明當有一個列表爲空時,輸出另一個列表:用途,鏈表中最後一個數的輸出 if (pHead1 == null) { return pHead2; } if (pHead2 == null) { return pHead1; } //這裏定義一個新的空鏈表,固然不定義也行,隨意。;老實說,寫多了 ,不過可有可無 ListNode newNode = null; //兩個鏈表的首數據大小判斷,判斷結束後,執行遞歸。 if (pHead1.val <= pHead2.val) { newNode = pHead1; //Merge即爲從新調用該函數,完成遞歸。遞歸必須有終結條件,不然即爲死循環 //而該函數的終結條件即爲前面開頭的那兩個if語句。 newNode.next = Merge(pHead1.next,pHead2); } else { newNode = pHead2; newNode.next = Merge(pHead1,pHead2.next); } return newNode; } }
Oh baby 情話多說一點遞歸
想我就多看一眼it
表現多一點點io
讓我能 真的看見class
Oh Bye 少說一點List
想陪你不僅一天
多一點 讓我
心甘情願 愛你 -- 好聽嗎??
哈哈哈哈哈哈哈哈哈 ........................