class Solution {
public:
ListNode* rotateRight(ListNode* head, int k) {
if(head == NULL) return head;
ListNode *p = head;
int len = 0;
while(p->next){
p = p->next;
len++;
}
len++;
p->next = head; //link head and tail
k %= len;
int temp = len - k;
while(temp > 0){
p = p->next;
temp--;
}
head = p->next;
p->next = NULL;
return head;
}
};
以上是AC代码
本题主要的技巧就是将链表首尾相连形成环
首先将k取余
标记出来倒数k+1位置的节点
最后将该节点的指向定义为新的头结点
再讲该指向NULL 来断开环链表