标签:直接 ble 说明 难度 完成 返回 而不是 使用 return
https://leetcode-cn.com/problems/reverse-nodes-in-k-group/
难度 | 完成日期 | 耗时 | 提交次数 |
---|---|---|---|
困难 | 2020-1-12 | 1小时 | 1 |
给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
示例 :
给定这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
说明 :
ListNode* reverseKGroup(ListNode* head, int k) {
ListNode *_head = head;
int length = 0;
while (head != nullptr) {
length++;
head = head->next;
}
head = _head;
int values[k];
ListNode *ans = new ListNode(0);
ListNode *l = ans;
for (int i = 0; i < length / k; i++) {
ListNode *start = head;
for (int j = 0; j < k; j++) {
values[j] = head->val;
head = head->next;
}
for (int j = 0; j < k; j++) {
ListNode *temp = new ListNode(values[k - j - 1]);
ans->next = temp;
ans = ans->next;
}
}
if (head != nullptr) {
ans->next = head;
}
return l->next;
}
刚开始的时候考虑过和 24 题一样的方法,修改是否继续进行下一轮反转的条件,并不能成功,于是考虑使用数组存储整个待反转部分的数值,再直接从数组中取值而不是靠指针移动取值。
标签:直接 ble 说明 难度 完成 返回 而不是 使用 return
原文地址:https://www.cnblogs.com/kennyoooo/p/12182043.html