給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。
示例 1:
輸入:1->2->3->4->5->null, k = 2輸出:4->5->1->2->3->null解釋:向右旋轉 1 步: 5->1->2->3->4->null示例 2:向右旋轉 2 步: 4->5->1->2->3->null
輸入:0->1->2->null, k = 4輸出:2->0->1->null
解釋:向右旋轉 1 步: 2->0->1->null向右旋轉 2 步: 1->2->0->null
向右旋轉 3 步:
0->1->2->null
向右旋轉 4 步:2->0->1->null
思路:首先需要一次迴圈判斷一共有多少個節點,這樣避免k值過大,造成旋轉節點多次無用重複,會出現超時。
接下用k對節點數取餘,這就是要迴圈的次數,也即右指標與左指標之間的節點個數。leetcode19題就是這種解題思路。
然後用雙指標,right先迴圈上面算出的值,然後right.next!=null時,right和left都一直往後取,最後的left就是旋轉結束時的最後乙個節點
left後面的節點就是要拿到前面去的節點。
61 旋轉鍊錶
給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1 2 3 4 5 null,k 2 輸出 4 5 1 2 3 null 解釋 向右旋轉 1 步 5 1 2 3 4 null 向右旋轉 2 步 4 5 1 2 3 null 示例 2 輸入 0 1 2 ...
61,旋轉鍊錶
給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1 2 3 4 5 null,k 2輸出 4 5 1 2 3 null解釋 向右旋轉 1 步 5 1 2 3 4 null 向右旋轉 2 步 4 5 1 2 3 null示例 2 輸入 0 1 2 nul...
61 旋轉鍊錶
給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1 2 3 4 5 null,k 2 輸出 4 5 1 2 3 null 解釋 向右旋轉 1 步 5 1 2 3 4 null 向右旋轉 2 步 4 5 1 2 3 null 示例 2 輸入 0 1 2 ...