Leecode刷題
- 題目描述
給定一個鏈表,旋轉鏈表,將鏈表每個節點向右移動 k 個位置,其中 k 是非負數。
- 示例
輸入: 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
- 代碼
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* rotateRight(ListNode* head, int k)
{
if (!head)return NULL;
ListNode *p1 = head;
int len = 1;
while (p1->next) {
p1 = p1->next;
len++;
}
p1->next = head;
k %= len;
for (int i = 1; i < len - k + 1; i++) {
p1 = p1->next;
head = head->next;
}
p1->next = NULL;
return head;
}
};