第一次被問反轉鍊錶是被位元組,我沒想出來。
後來在劍指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...