206 反轉鍊錶

2022-09-28 07:15:08 字數 756 閱讀 2989

目錄給你單鏈表的頭節點 head ,請你反轉鍊錶,並返回反轉後的鍊錶。

示例 1:

輸入:head = [1,2,3,4,5]

輸出:[5,4,3,2,1]

示例 2:

輸入:head = [1,2]

輸出:[2,1]

示例 3:

輸入:head =

輸出:鍊錶中節點的數目範圍是 [0, 5000]

-5000 <= node.val <= 5000

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

鍊錶的交換,需要知道當前節點和他的前乙個節點

class solution 

return pre;

}}

遞迴的終止條件

當遍歷到最後乙個節點就可以開始返回了

if(head==null||head.next==null)return head;

//head是排除剛進來就為空的情況

遞迴的單層邏輯

根據下圖可以看見,遞迴的返回最後乙個節點,也就是翻轉之後的新節點,這個值需要層層傳遞下去

單層遞迴需要做的就是,把當前的節點加在翻轉成功的節點的後面。

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 指向第乙個節點,這樣就完成了第乙個節點的逆置,以此類推就可以翻轉這個鍊...