劍指 Offer 24 反轉鍊錶 python

2021-10-09 02:44:37 字數 814 閱讀 9720

題目鏈結

題目描述:

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。

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

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

解題思路:

需要三個指標

1.乙個保留當前節點的next,防止鍊錶斷裂

2。乙個表示當前節點的前驅節點,用於反轉

3。表示遍歷當前節點

class solution:

def reverselist(self, head: listnode) -> listnode:

if not head:

return

pnode=head

pre=none

while pnode:

pnext=pnode.next#儲存當前節點的下乙個節點,防止鍊錶斷掉

if pnext is none:#當前節點是最後乙個節點

pnew=pnode#反轉後的頭節點

pnode.next=pre

pre=pnode

pnode=pnext

return pnew

遞迴做法

if not head or head.next is none:

return head

re=self.reverselist(head.next)#儲存新的頭節點

head.next.next=head

head.next=none

return re

劍指Offer 24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。例 輸入 1 2 3 4 5 none 輸出 5 4 3 2 1 none 雙指標遍歷鍊錶,將當前節點的next設為前乙個節點。注意儲存當前節點的next來遍歷。時間複雜度 o n 空間複雜度 o 1 def reverse l...

劍指offer24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。樣例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null思路 初始化乙個新的頭節點new head,然後用尾插法把原始鍊錶中的結點插入新的頭節點。最後return new head next.acwing 3...

劍指offer24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出轉換後的頭結點。首先,從題目中可得知為單鏈表結構,只有指向下乙個元素的指標。而要完成整個鍊錶的反轉則需要將所有next指標進行反轉。定義3個指標,分別指向當前遍歷的節點 它的前乙個節點以及後乙個節點。pnode ppre pre pnode phe...