83 字
1 分钟
LeetCode 面试经典150题 [62/150 旋转链表]
题目描述
给你一个链表的头节点 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-旋转链表/ 部分信息可能已经过时
相关文章 智能推荐