题目描述
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。
示例 1:

输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3]
示例 2:

输入:head = [0,1,2], k = 4 输出:[2,0,1]
个人C++解答
GYL
利用辅助向量,将链表放入,然后先访问k后的,然后再链接到首个位置;
/**
* 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 == nullptr) return head;
ListNode * result = new ListNode();
ListNode * p = head, *q = result;
vector<ListNode*> vtr;
while(p){
vtr.push_back(p);
p = p->next;
}
for(int i=vtr.size()-k%vtr.size();i<vtr.size();i++){
q -> next = vtr[i];
q = q->next;
}
vtr[vtr.size()-k%vtr.size()-1]->next = nullptr;
q->next = vtr[0];
return result->next;
}
};

