LeetCode No 206 反轉鍊錶

2021-10-09 13:27:53 字數 1021 閱讀 8358

== 反轉鍊錶,經典題目,需要記住。 ==

反轉乙個單鏈表。

示例:

輸入: 1->2->3->4->5->null

輸出: 5->4->3->2->1->null

高階:你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?

從鍊錶第乙個節點開始,一路操作下去直到null。

時間複雜度: o(n)

空間複雜度:o(1)

執行用時:

8 ms, 在所有 c++ 提交中擊敗了95.86%的使用者

記憶體消耗:

8.2 mb, 在所有 c++ 提交中擊敗了77.70%的使用者

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

return prev;}}

;

遞迴的process current layer不一定在drill down後面,也可能在drill down返回後再處理本層業務。

時間複雜度:o(n)

空間複雜度:o(n)

執行用時:

8 ms, 在所有 c++ 提交中擊敗了95.86%的使用者

記憶體消耗:

8.5 mb, 在所有 c++ 提交中擊敗了11.18%的使用者

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

};

206 反轉鍊錶

任務描述 思路 遇到問題 修改 迴圈前判斷傳入引數是否為空 迭代時沒有考慮l3.next none的情況 實現 definition for singly linked list.class listnode def init self,x self.val x self.next none cla...

206 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 迭代就不說了,儲存當前節點的前繼節點迴圈改變指標指向就行。我自己先寫了個遞迴的,但看了題解的遞迴,一比就比下去了。class solution def reverselist self,head listn...

206 反轉鍊錶

題目 反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 思路 首先,我們建立兩個新的空節點 prev 和 newhead 我們原來的第乙個節點的下乙個節點指向prev,然後再讓prev 指向第乙個節點,這樣就完成了第乙個節點的逆置,以此類推就可以翻轉這個鍊...