leetcode 反轉鍊錶問題總結

2021-10-22 14:02:14 字數 1294 閱讀 4725

第一次被問反轉鍊錶是被位元組,我沒想出來。

後來在劍指offer上面看到了,我沒做出來。

在leetcode和牛客上遇見,是那麼的熟悉。

今天的每日一題還是思路不清晰。

我意識到,我是時候寫點什麼了。

希望下次遇到的時候思路清晰,一招斃命。

反轉鍊錶i

反轉鍊錶ii

反轉鍊錶i是把整個鍊錶都反轉,相對來說容易一些,可以有迭代和遞迴兩種方式。

public listnode reverselist

(listnode head)

return prev;

}

public listnode reverselist

(listnode head)

public listnode reverse

(listnode prev,listnode curr)

listnode next = curr.next;

curr.next = prev;

prev = curr;

curr = next;

return

reverse

(prev,curr)

;}

反轉鍊錶ii相對來說就複雜了好多,需要反轉的位置是第m個節點到第n個節點。也有兩種思路:一種是繼承了上面的方法,把m到n提出來反轉完了再和其他部分拼接;另一種就是直接反轉。

public listnode reversebetween

(listnode head,

int left,

int right)

listnode prev = former;

listnode curr = prev.next;

listnode later = curr;

for(

int i=left;i<=right;

++i)

later.next = curr;

former.next = prev;

return dummy.next;

}

public listnode reversebetween

(listnode head,

int left,

int right)

head = former.next;

for(

int i=left;i++i)

return dummy.next;

}

LeetCode 反轉鍊錶(鍊錶問題)

難度 簡單 反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null使用三個listnode,分別是prev,curr,next。curr是當前指標指向的節點,prev是curr的前乙個節點,頭節點的前乙個節點是null,next是curr的下乙個節點,用於遍歷鍊...

LeetCode 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?思路 雙指標,先用乙個指標算出鍊錶結點個數n,每次快指標從頭往先前移動n 步,慢指標往前移動1步進行交換即可。definition for sin...

LeetCode 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 思路分析 直接一趟掃瞄即可。方法二 遞迴 definition for singly linked list.struct listnode class solution listnode reversea...