题意
旋转链表
题解
k可能大于链表节点个数n,由于没旋转n次又回到原链表,所以最终只需要旋转k%n次。
代码
“`c++
class Solution {
public:
ListNode* rotateRight(ListNode* head, int k) {
if(head == NULL)
return NULL;
int n = 0;
ListNode *iter = head;
while(iter)
{
iter = iter->next;
n++;
}
k = k % n;
ListNode *right = head;
int i = 0;
while(right->next && i < k) //right go first by k steps
{
right = right->next;
i++;
}
ListNode *left = head;
while(right->next)
{
right = right->next;
left = left->next;
}
right->next = head;
head = left->next;
left->next = NULL;
return head;
}
};