起初想到的思路是不斷將最後的節點用頭插法插入鍊錶,直到插入k次
class solution
k %= len; //以防k大於鍊錶長度,以len為週期
if(k == 0)
return head;
listnode chs = head; //儲存頭節點
tmp = head;
//先將tmp向右移動k個位置
while(k > 0)
//兩個快慢指標,當tmp到達空指標處,head距離末尾正好k個距離
while(tmp.next != null)
//res為新的頭節點
listnode res = head.next;
//斷開連線,生成尾節點
head.next = null;
//後半段尾節點指向前半段頭節點
tmp.next = chs;
return res;}}
結果:
官方採用了一種思路,先將首尾閉合,想不到:
class solution
}
結果:
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 ...