遞迴: 程式呼叫自身的程式設計技巧稱為遞迴。
一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。
遞迴終止條件
遞迴的終止條件一般定義在遞迴函式內部,在遞迴呼叫前要做乙個條件判斷,根據判斷的結果選擇是繼續呼叫自身,還是return;返回終止遞迴。
終止的條件:
1、判斷遞迴的次數是否達到某一限定值。
2、判斷運算的結果是否達到某個範圍等,根據設計的目的來選擇。
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。
示例:輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
思路這道題可以使用遞迴實現,新鍊錶也不需要構造新節點,我們下面列舉遞迴三個要素
終止條件:兩條鍊錶分別名為 l1 和 l2,當 l1 為空或 l2 為空時結束
返回值:每一層呼叫都返回排序好的煉表頭
本級遞迴內容:如果 l1 的 val 值更小,則將 l1.next 與排序好的煉表頭相接,l2 同理
o(m+n)o(m+n)o(m+n),mmm 為 l1的長度,nnn 為 l2 的長度
/**
* definition for singly-linked list.
* public class listnode
* }*/class solution
if(l2 == null)
//值小的連線到大的值大的那乙個鍊錶後面
if(l1.val < l2.val) else
}}
合併兩個有序鍊錶
鍊錶的題目總是讓我很惆悵。動輒就會runtime error。比如這題,額外用了乙個節點的空間來儲存頭節點。我很不情願多用這個空間,不過貌似不行。貌似不行,實際可行,見附錄。把頭節點提出迴圈 實現類 class solution else if l1 null p next l1 if l2 nul...
合併兩個有序鍊錶
三個指標乙個儲存la鍊錶 乙個儲存lb鍊錶,乙個指向新的鍊錶。鍊錶的插入,兩個指標,乙個是head,乙個指向head後面的鏈,新插入的元素位於head後面。執行該 自己外加上class類。static class node public static void main string args st...
合併兩個有序鍊錶
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4思路 很簡單就是二路歸併的思想,時間複雜度o n definition for singly linked list.struct listno...