LeetCode 25. K 个一组翻转链表
创始人
2024-05-26 00:17:08
0

原题链接

难度:hard\color{red}{hard}hard

题目描述

给你链表的头节点 headheadhead , kkk 个节点一组进行翻转,请你返回修改后的链表。

kkk 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 kkk 的整数倍,那么请将最后剩余的节点保持原有顺序。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

示例 1:

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

示例 2:

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

提示:

  • 链表中的节点数目为 nnn
  • 1<=k<=n<=50001 <= k <= n <= 50001<=k<=n<=5000
  • 0<=Node.val<=10000 <= Node.val <= 10000<=Node.val<=1000

进阶: 你可以设计一个只用 O(1)O(1)O(1) 额外内存空间的算法解决此问题吗?


算法

(模拟)

  1. 增加虚拟头结点 dummy
  2. 对于每一轮的修改,求出 end 指针为下一轮需要交换的最后一个结点;在找 end 的过程中,若不足 k 个结点,则直接终止循环。
  3. 在找到 end 后,设置 ab 两个指针修改相邻结点之间的连接关系,需要一个临时的 c 指针来指向 bnext。(参考代码)
  4. 最终修改 p->nextc->next
  5. p 指向下一轮修改的起始位置的前一个位置。

在这里插入图片描述

C++ 代码

/*** 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* reverseKGroup(ListNode* head, int k) {ListNode* dummy = new ListNode(0, head);for (auto p = dummy;;) {auto end = p;for (int i = 0; i < k && end != NULL; i ++) end = end->next;if (end == NULL) break;auto a = p->next, b = a->next;for (int i = 0; i < k - 1; i ++) {auto c = b->next;b->next = a;a = b, b = c;}auto c = p->next;p->next = a, c->next = b;p = c;}return dummy->next;}
};

相关内容

热门资讯

魁拔4发蛮吉是魁拔了吗? 魁拔4发蛮吉是魁拔了吗?发现了,你可以去看魁书2,感情线也明了了,我会骗你吗?谁知道,去问王川呀
找一本小说男主好像姓凤,女主是... 找一本小说男主好像姓凤,女主是一对双胞胎的姐姐,叫什么就忘了,男二号叫龙飞,和双胞胎妹妹相爱的女主姓...
明朝精彩故事 明朝精彩故事喜欢明朝的故事,建议看【明朝那些事儿】用现代的语言说明朝的故事,你会喜欢的,里面语言很幽...
用过‘千万别学英语’的请进 用过‘千万别学英语’的请进我觉得这书没什么意思,有时候任何东西都是只适合一部分人的。我每天听那些磁带...
学英语时英美式发音混在一起了怎... 学英语时英美式发音混在一起了怎么办?哪种发音好?学的词汇是英式发音,但是很多听力却是美式发音的,怎么...
"我不是个稻草人,不能说不能动... "我不是个稻草人,不能说不能动"是哪首歌里的?稻草人,林志颖唱的林志颖演唱的 稻草人林志颖的稻草人
恶魔猎手有什么那么厉害,高手看... 恶魔猎手有什么那么厉害,高手看中他那点厉害恶魔猎手有什么那么厉害,高手看中他那点厉害速度技能都很好。...
请问这样的短信该怎样回 请问这样的短信该怎样回夸奖夸奖,久闻阁下大名,今日一见果然名不虚传。肥硕如象,真是过犹而不及。小生我...
女上司总来撩我怎么办,我也会把... 女上司总来撩我怎么办,我也会把持不住的找借口或是直接反撩她,我猜你也不敢,可能对你有意思,没女朋友就...
为什么良渚文化可以证明中华文明... 为什么良渚文化可以证明中华文明五千年,而龙山文化等其他文化不能证明?因为良渚文化有不少文化遗产可以证...
炎亚纶的资料。 炎亚纶的资料。去网上搜 炎亚纶
男主重生重进宗门 不是都市小说... 男主重生重进宗门 不是都市小说 以前在师傅手下学药后来和师姐好上了重生小说一般都不会放过师姐。。。
万章曰:"尧以天下与... 万章曰:"尧以天下与舜,有诸?(孟子的学生)万章问(孟子):“尧把天下授与舜,有这回事吗?” 问的是...
写近义词饱胀对什么清早对什么依... 写近义词饱胀对什么清早对什么依然对什么?饱胀对饱满,清早对清晨,依然对依旧饱胀的近义词: 饱足 饱满...
梦到在上课 梦到在上课老师你也敢戏弄?别说给小鞋你穿,紧紧鞋带都够你受的。这是你潜意识里发泄心理压力,而达到心理...
怎么写一个人很温柔,写一段话 怎么写一个人很温柔,写一段话我不知道那些鸿雁究竟是怎样掠夺了我忧郁无助的天空。就像你撩动温柔浸渍了我...
中风了应该怎样处理? 中风了应该怎样处理?中风多由脑血管疾病引发,是一种常见急症。处理原则是:保持病人安静,让病人卧下,将...
盘点2021高评分的古装剧,哪... 盘点2021高评分的古装剧,哪部剧最让你感到意难平?杨幂的斛珠夫人 。在这部剧的结局当中,男一男二,...
奔字的笔顺笔画顺序 奔字的笔顺笔画顺序汉字: 奔 读音: bèn bēn 部首: 大 笔画...
智商跟性格有关吗 智商跟性格有关吗有关啊,有相关的研究,但是相关未必是因果,可能是因为智力高所以才有的那些性格或者别的...