題目: 給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。
輸入:1->2->3->4->5->null, k = 2
輸出:4->5->1->2->3->null
解釋:向右旋轉 2 步: 4->5->1->2->3->null
解題思路 : 首先用len記錄鍊錶長度 , 只需要用k模上len, 就可以判斷是否鍊錶是否需要旋轉, 然後將鍊錶可以分成1->2->3 和 4->5->nulll兩部分, 最終只需要將後面的掛到前面即可: 4->5->1->2->3->null;
**如下:
/**
* definition for singly-linked list.
* struct listnode ;
*/struct listnode* rotateright(struct listnode* head, int k)
k=k%len;
//如果k為0
if(k==0)
return head;
//計算出鍊錶分界點所要走的步數
len=len-k-1;
while(len--)
p2=p2->next;
//記錄第二部分的頭結點
p3=p2->next;
p1=p3;
//找出第二部分的尾節點
while(p1->next)
p1=p1->next;
p2->next=null;
p1->next=head;
return p3;
}
Leetcode 旋轉鍊錶
from 給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 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...
leetcode 旋轉鍊錶
給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 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使用陣列記錄狀態 class ...
leetcode 鍊錶 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 ...