演算法題中的連結串列
這兩天在網上刷演算法題,做著做著發現關於連結串列的題目簡直不要太多,
先上一題原題,難度:困難
合併 k 個排序連結串列,返回合併後 的排序連結串列。請分析和描述演算法的複雜度。
示例:
輸入:[ 1->4->5, 1->3->4, 2->6 ]輸出: 1->1->2->3->4->4->5->6
首先我所做的的連結串列是
一種根據元素節點邏輯關係排列起來的一種資料結構。利用連結串列可以儲存多個資料,連結串列和陣列的區別在於,陣列的長度是固定的,而實際應用中會經常遇到的長度都是不確定的
是不是看起來有點眼熟,然後我翻開了880,沒錯,這不是和集合一樣嗎,然後翻書,查資料
連結串列是一種資料結構
LinkedList就是以連結串列為資料結構的一種集合
而ArrayList則是以陣列為資料結構的集合
懂了!
之後就好做了
關於這道題,其實有好幾種解法
第一種:暴力
- 遍歷所有連結串列,將所有節點的值放到一個陣列中。
- 將這個陣列排序,然後遍歷所有元素得到正確順序的值。
-
用遍歷得到的值,建立一個新的有序連結串列。
第二種:逐一比較
-
比較K個節點,然後找到最小的那個數的節點
-
將選中的節點接在最終節點最後
-
迴圈上面的步驟
第三種:兩兩合併
-
將兩個連結串列合併成一個連結串列
class Solution { public ListNode mergeTwoLists(ListNode L1, ListNode L2) { if (L2 == null) { return L1; } else if (L1 == null) { return L2; } else if (L1.val < L2.val) { L1.next = mergeTwoLists(L1.next, L2); return L1; } else { L2.next = mergeTwoLists(L1, L2.next); return l2; } } }
(遞迴牛批!)
其實想通了以後就蠻簡單的,說是困難的難度,其實主要就是考察連結串列的理解和應用
連結串列的應用在日常生活中沒有比陣列低
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2653345/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- (連結串列)連結串列的排序問題排序
- 連結串列面試題(四)---查詢連結串列的中間節點面試題
- 連結串列專題——面試中常見的連結串列問題面試
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- javascript中的連結串列結構—雙向連結串列JavaScript
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 演算法問題總結-連結串列相關演算法
- 演算法-連結串列演算法
- [演算法總結] 17 題搞定 BAT 面試——連結串列題演算法BAT面試
- 【Algorithm】連結串列演算法中啞結點作用Go演算法
- 演算法題:反轉一個單連結串列&判斷連結串列是否有環演算法
- 【演算法題】反轉連結串列的兩種方法演算法
- 輕鬆搞定面試中的連結串列題目面試
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- 把玩演算法 | 連結串列演算法
- 【演算法】連結串列的基本操作和高頻演算法題演算法
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 演算法搜狗筆試題連結串列合併演算法筆試
- 【小白學演算法】5.連結串列(linked list)、連結串列的新增演算法
- 資料結構和演算法面試題系列—連結串列資料結構演算法面試題
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- 演算法刪除單連結串列中重複的元素演算法
- 結構與演算法(03):單向連結串列和雙向連結串列演算法
- 單連結串列的排序問題排序
- 演算法面試(一) 連結串列演算法面試
- 初級演算法-連結串列演算法
- 力扣--連結串列演算法力扣演算法
- 筆記--連結串列演算法筆記演算法
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- 【精挑細講】這 10 道連結串列相關演算法題,將助你告別連結串列問題(上)演算法
- 帶頭結點的連結串列操作題
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 連結串列-雙向連結串列
- 連結串列-迴圈連結串列
- 876. 連結串列的中間結點