給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。
示例 1:
示例 2:
1.找到舊的尾部並將其與煉表頭相連 old_tail.next = head,整個鍊錶閉合成環,同時計算出鍊錶的長度 n。
2.找到新的尾部,第 (n - k % n - 1) 個節點 ,新的煉表頭是第 (n - k % n) 個節點。
3.斷開環 new_tail.next = none,並返回新的煉表頭 new_head。
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
if(head-
>next ==
null
) listnode* old_tail = head;
int n =1;
for(n =
1; old_tail-
>next !=
null
;++n)
old_tail-
>next = head;
//形成環狀鍊錶
//新的尾節點 n - k % n-1
//新的頭節點n - k % n
listnode* new_tail = head;
for(
int i =
0;i < n-k % n-1;
++i)
listnode* new_head = new_tail-
>next;
new_tail-
>next =
null
;//斷開鍊錶
return new_head;}}
;
時間複雜度:o(n),其中 n 是鍊錶中的元素個數
空間複雜度:o(1),因為只需要常數的空間
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 ...