就是将一段链表分成2段,把第一段接在第二段的后面
/**
* 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;
if(!head->next) return head;
//得到链表长度
ListNode* rear=head;
int length=1;
for(;rear->next;++length)
rear=rear->next;
//顺便将链表连成环
rear->next=head;
//找到第一段的结尾
ListNode* rear2=head;
for(int i=0;i<length-k%length-1;++i)
rear2=rear2->next;
//找到第二段的开头
ListNode* head2=rear2->next;
rear2->next=NULL;
return head2;
}
};