因為鍊錶可以使用指標進行遍歷,這時塊就可以使用指著對鍊錶進行遍歷鍊錶具有天然的遞迴性可以使用雙指標,快慢指標
可以把上圖中的第二個鍊錶看成節點 0 後面掛接了乙個更短的鍊錶,比第乙個鍊錶少了乙個節點;
這個更短的鍊錶可以看成 1 作為頭節點的鍊錶,這個更短的鍊錶可以繼續看成節點 1 後面掛接了乙個更更短的鍊錶;
這個更更短的鍊錶可以看成 2 作為頭節點的鍊錶,依次類推,空本身可以理解也是乙個鍊錶,最基礎最平凡的鍊錶。
有了這樣的思考,鍊錶中的很多操作,都可以使用遞迴這種邏輯思維方式來完成。
記錄刪除節點的前乙個節點
在紙上或者白班上畫出節點之間的互相關係畫出修改的方法
憑空想象是比較困難的
畫在白班上,還能讓面試官清楚的看到思路
最好採用遞迴與迭代的方式都可以試試哨兵機制
,定義乙個啞節點dummynode
,令dummynode.next=head
刪除節點需要儲存待刪除節點的前乙個節點cur
,因此往往在遍歷的時候,需要儲存前乙個節點
1、遞迴的方式不用考慮過多的細節2、迭代的方式需要考慮太多的細節
在鍊錶的中間節點,鍊錶的反轉,鍊錶的快慢指標,雙指標的基礎上進行整合,分析
遞迴法
迭代法
步常用,用到陣列排序的思想,歸併,選擇排序
Leetcode刷題鍊錶之環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。定義兩個指標,從頭節點開始,兩個指標都向右移動,但是設定他們的移動速度不一樣,如果為環形鍊錶,則指標肯定會相遇。若為直鏈表,兩個指標至少有乙個為空。definition for singly linked list.class listnode public cla...
Leetcode鍊錶刷題之 206 反轉鍊錶
反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?解題思路 原地旋轉鍊錶,可以構建兩個指標,乙個指向當前結點的前乙個,乙個指向當前的結點,每次迴圈的時候,找到當前鍊錶的下乙個,在翻轉的過程中,將...
Leetcode刷題鍊錶之合併有序鍊錶
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 由於兩個鍊錶都是有序的,因此相當於固定乙個鍊錶,另乙個鍊錶插入到其中。這裡只要比較兩個鍊錶中節點中值的大小即可。可以先建立乙個新的鍊錶,設定乙...