61 旋轉鍊錶

2021-10-02 06:57:27 字數 1133 閱讀 9769

給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 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 ...