【演算法-java實現】合併兩個有序連結串列
【演算法-java實現】合併兩個有序連結串列
一.問題描述:
將兩個升序連結串列合併為一個新的 升序 連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
二.問題解答:
方法:遞迴
如果 l1 或者 l2 一開始就是空連結串列 ,那麼沒有任何操作需要合併,所以我們只需要返回非空連結串列。否則,我們要判斷 l1 和 l2 哪一個連結串列的頭節點的值更小,然後遞迴地決定下一個新增到結果裡的節點。如果兩個連結串列有一個為空,遞迴結束。
本題解析:Leetcode21
覺得講的比較通俗易懂的:畫解演算法
三.演算法分析:
1.時間複雜度為O(n+m)。該問題需要對兩個連結串列的所有節點進行判斷,時間複雜度取決於兩個連結串列的節點個數。
2.額外空間複雜度為O(n+m)。遞迴的本質就是呼叫計算機棧,棧的大小取決於遞迴呼叫的深度(深度即為兩個連結串列的節點個數)。
3.遞迴:遞迴就是程式執行時自己呼叫自己,一個遞迴過程就是出入棧的過程。
使用遞迴時應該考慮1.如何設計遞迴函式 2.遞迴的終止條件
程式碼如下
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null){
return l2;
}else if(l2==null){
return l1;
}else if(l1.val<l2.val){
l1.next=mergeTwoLists(l1.next,l2);
return l1;
}else {
l2.next=mergeTwoLists(l1,l2.next);
return l2;
}
}
}
相關文章
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- 每日leetcode——21. 合併兩個有序連結串列LeetCode
- 讓我們一起啃演算法----合併兩個有序連結串列演算法
- Leetcode 21 合併兩個有序連結串列 學習感悟LeetCode
- 【LeetCode Hot 100】21. 合併兩個有序連結串列LeetCode
- 測試開發每日演算法 Leecode21. 合併兩個有序連結串列演算法
- 23. 合併K個元素的有序連結串列
- 02-線性結構1 兩個有序連結串列序列的合併 (15分)
- 前端菜鳥的每週一道演算法題(三) 合併兩個有序連結串列前端演算法
- Fourth. LeetCode 21:MergeTwo Sorted Lists 合併兩個有序連結串列LeetCode
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- [LeetCode] Merge k Sorted Lists 合併k個有序連結串列LeetCode
- 合併K個排序連結串列排序
- 資料結構實驗之連結串列四:有序連結串列的歸併資料結構
- 合併兩個有序陣列陣列
- 實戰資料結構(3)_兩個單連結串列間的合併操作資料結構
- leetcode雙週賽(2)-合併兩個連結串列LeetCode
- JZ-016-合併兩個排序的連結串列排序
- 劍指offer面試17 合併兩個排序的連結串列面試排序
- 88、合併兩個有序陣列陣列
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- 88. 合併兩個有序陣列陣列
- [每日一題] 第十八題:合併兩個排序的連結串列每日一題排序
- 演算法搜狗筆試題連結串列合併演算法筆試
- 兩個有序陣列如何合併成一個有序陣列陣列
- 將兩個有序陣列合併為一個有序陣列陣列
- 有a,b兩個已按學號升序排序的連結串列,每個連結串列中的結點包括學號、成績。要求把兩個連結串列合併,仍按學號升序排列。...排序
- 反轉連結串列、合併連結串列、樹的子結構
- 牛客網高頻演算法題系列-BM4-合併兩個排序的連結串列演算法排序
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構
- leecode.23. 合併K個升序連結串列
- 18.合併兩個有序陣列(簡單)陣列
- 連結串列-單連結串列實現
- java實現連結串列反轉Java
- java實現雙向連結串列Java
- 演算法單連結串列交換任意兩個元素演算法
- LeetCode 之 JavaScript 解答第23題 —— 合併K個有序連結串列(Merge K Sorted Lists)LeetCodeJavaScript