LeetCode 25. Reverse Nodes in k-Group
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
You may not alter the values in the nodes, only nodes itself may be changed.
Only constant memory is allowed.
For example,
Given this linked list: 1->2->3->4->5
For k = 2, you should return: 2->1->4->3->5
For k = 3, you should return: 3->2->1->4->5
Subscribe to see which companies asked this question.
- 可以申请一个vector数组, 将链表的值全部储存到vector中.
- 每k个分为一组。
- 对于每一组可以从头到位给链表赋值就行了。
class Solution
{
public:
ListNode* reverseKGroup(ListNode* head, int k)
{
vector<int> vec;
ListNode *root = head;
while(head != nullptr)
{
vec.push_back(head->val);
head = head->next;
}
head = root;
int res = 0;
while(head != nullptr)
{
int b = res * k, e = (res+1)*k-1;
if(e > vec.size() - 1)
break;
while(b <= e)
{
head->val = vec[e --];
head = head->next;
}
res ++;
}
return root;
}
};
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步