mobile wallpaper 1
mobile wallpaper 2
mobile wallpaper 3
mobile wallpaper 4
83 字
1 分钟
LeetCode 面试经典150题 [62/150 旋转链表]
2024-07-04

题目描述#

给你一个链表的头节点 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++解答#

利用辅助向量,将链表放入,然后先访问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;
}
};
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

LeetCode 面试经典150题 [62/150 旋转链表]
https://ericonline.cn/posts/leetcode-面试经典150题-62-150-旋转链表/
作者
Eric
发布于
2024-07-04
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录