LeetCode 反轉鍊錶

2021-08-24 21:01:53 字數 834 閱讀 7732

反轉乙個單鏈表。

示例:

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

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

高階:

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

思路:雙指標,先用乙個指標算出鍊錶結點個數n,每次快指標從頭往先前移動n--步,慢指標往前移動1步進行交換即可。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

int n = count;

while(count > n/2)

slow = slow->next;

}return head;

}};

中的方法:可以做到in-place的反轉。鍊錶反轉後,實際上只是中間節點的指標反轉,並且反轉後原來鍊錶的頭結點的下乙個節點應該為null,而反轉後鍊錶的頭結點為原來鍊錶的尾節點。我們可以從頭結點開始,每次處理兩個節點之間的乙個指標,將其反轉過來。然後再處理接下來兩個節點之間的指標……直至遇到尾節點,設定為新鍊錶的頭結點即可。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return rhead;

}};

LeetCode 反轉鍊錶

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

反轉鍊錶 LeetCode

遞迴版本稍微複雜一些,其關鍵在於反向工作。假設列表的其餘部分已經被反轉,現在我該如何反轉它前面的部分?假設列表為 n1 nk 1 nk nk 1 nm 若從節點 nk 1 到 nm 已經被反轉,而我們正處於 nk n1 nk 1 nk nk 1 nm 我們希望 nk 1 的下乙個節點指向 nk 所以...

LeetCode 反轉鍊錶

leetcode反轉鍊錶 利用雙指標 class solution return prev 利用遞迴 class solution 這裡的cur就是最後乙個節點 listnode cur reverselist head.next 這裡請配合動畫演示理解 如果鍊錶是 1 2 3 4 5,那麼此時的c...