当前位置: 首页 > news >正文

力扣HOT100(31)K 个一组翻转链表

整体大思路把链表按 k 个节点分成一组一组对每一组单独翻转然后把翻转后的组和前后的组重新连接起来最后不足 k 个的组不翻转。我们只需要解决 3 个小问题怎么判断剩下的节点够不够 k 个怎么翻转一组 k 个节点怎么把翻转后的组和前后的组连接起来步骤 1判断剩余节点是否够 k 个我们用一个tail指针从当前组的前驱节点pre开始往前走 k 步如果能走完 k 步说明剩余节点够 k 个可以翻转如果走不到 k 步就到nullptr了说明不够直接结束步骤 2翻转一组 k 个节点这是 206 题「反转链表」的变种我们需要翻转从head到tail的子链表并且返回翻转后的新头和新尾方便后面连接。步骤 3把翻转后的组重新连接起来这是这道题最关键的一步翻转前一定要先保存下一组的头节点不然会断链固定 4 步连接逻辑保存下一组的头ListNode* nex tail-next;翻转当前组得到新头和新尾tie(newHead, newTail) reverse(head, tail);上一组的尾指向新头pre-next newHead;新尾指向下一组的头newTail-next nex;然后更新指针准备处理下一组pre newTail;下一组的前驱是当前组的新尾head nex;下一组的头是之前保存的 nex/** * 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: //写一个pair类型的 函数 翻转一个子链表并返回新的头和尾 //pair容器用于存放成对出现的 可以返回新生成的pair.first pair.second pairListNode*,ListNode* myReverse(ListNode* head,ListNode* tail){ ListNode* prev tail-next; ListNode* p head; while(prev ! tail){ //反转链表 ListNode* nex p-next;//p的下一个存在nex中 p-next prev; prev p; p nex; } return {tail,head};//返回新的头 和尾巴 } ListNode* reverseKGroup(ListNode* head, int k) { ListNode* hair new ListNode (-1,head); ListNode* pre hair; while(head){ ListNode* tail pre;//尾指针 用来判断剩余部分还有k个吗。初始在虚拟头 for(int i 0; ik;i){ tail tail-next;//tail一直往前走 if(tail nullptr){//走到空说明不满足k步了 直接返回 终止循环 return hair-next; } } //现在就是满足k步的 ListNode * nex tail-next;//tail现在的位置在第k个元素 //接下来调用函数 进行翻转 tie(head, tail) myReverse(head, tail); //子链表重新接回去 pre-next head; tail-next nex; pre tail;//用来存放下一组头的前驱 head tail-next;//开始前移 } return hair-next; } };
http://www.rkmt.cn/news/1397688.html

相关文章:

  • 2026服装电商干货:怎么用AI提取服装图案?FD+图案提取与创新实操
  • 英雄联盟回放播放终极方案:ROFL-Player完全实战指南
  • 终极指南:5个简单步骤在Mac上完整备份和查看微信聊天记录
  • 2026年无尘车间/净化工程精选推荐榜:食品电子医疗洁净厂房源头厂家与实验室无菌室优质品牌深度解析 - 企业推荐官【官方】
  • 微信小程序商城搭建教程(适合无技术、预算低)零基础就能自己搭建
  • Unity之PhotonServer使用注意
  • LBS 开发选型参考:滴图全栈地图服务能力与多行业落地实践
  • 低代码能做资质管理吗
  • 从‘Hello World’到实战:手把手教你用bpftrace玩转Linux内核tracepoint(附排错脚本)
  • 2026热门内江青砂岩排行:青砂岩边角料、青砂石材雕刻、佛像石材雕刻厂、内江石材雕刻厂、四川石材雕刻厂、墓碑石材雕刻选择指南 - 优质品牌商家
  • 如何用LibreHardwareMonitor实现电脑硬件监控:新手用户的完整指南
  • 别乱删旧内核!Debian 系统内核安全降级与清理旧内核包的详细步骤
  • 2026最新 |《曼达洛人与格罗古》:星战新篇全解析,这些细节你绝对不能错过
  • 个人微信机器人防封指南:如何给 AI 助理加上敏感词过滤
  • 浙江正珉电气线上获客爆发:关键词排名跃升13.5倍询盘增长的背后,藏着一网推的“精准运营密码”
  • 2026五大树洞陪玩隐私标杆平台权威报告 - 时时资讯
  • 养了十年龙虾,我劝你学点代码
  • 聚焦2026年第二季度:衡水有实力的滤筒除尘器厂家订购指南 - 2026年企业资讯
  • 2026可靠工地二手空调采购:宜宾荣生其商贸有限公司联系/开店设备采购/新旧二手市场/火锅店设备回收/酒店设备回收/选择指南 - 优质品牌商家
  • CLI-Chatbot实现多轮对话以及history
  • Claude高效使用全攻略
  • 从MobileNetV1到V3:手把手带你用Python复现关键模块,看轻量网络如何‘进化’
  • 如何快速配置rtl88x2bu驱动:完整Linux Wi-Fi适配器安装指南
  • 33.原生手撕高通 EDL 刷机源码!Sahara/Firehose 协议底层实现 + 完整工程流程
  • 32.9008 深度刷机 + DFU 强制恢复,搞定 99% 手机系统崩溃变砖故障
  • 0101未来科技:硅基先进制程物理封顶:2nm/1nm节点宣告
  • 2026成都酷路泽老改新服务深度评测报告:成都酷路泽老改新公司、成都酷路泽老改新推荐、酷路泽改装公司价格、酷路泽改装公司厂家选择指南 - 优质品牌商家
  • ZnO氧化锌定制:氧化锌的“百变秀”
  • 糖尿病最新前沿研究(2026年5月)
  • 知识付费行业困局下,创客匠人如何用“结果式付费”破局