算法
梦回大一数据结构
时间复杂度 $O(n)$
C++ 代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* rotateRight(ListNode* head, int k) {
if(!head||!head->next)
return head;
ListNode * p =head;
int len = 0;
while(p)
{
len++;
p = p->next;
}
k = k %len;
p = head;
ListNode * q = head;
int tk = k;
while(tk--)
q = q->next;
while(q->next)
{
p = p->next;
q = q->next;
}
q->next = head;
head = p->next;
p->next = NULL;
return head;
}
};