题目:

给出一个链表,每 个节点一组进行翻转,并返回翻转后的链表。

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

示例 :

给定这个链表:1->2->3->4->5

当 = 2 时,应当返回: 2->1->4->3->5

当 = 3 时,应当返回: 3->2->1->4->5

说明 :

  • 你的算法只能使用常数的额外空间。
  • 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
//K个一组翻转链表
class Solution {
public:// 翻转一个子链表,并且返回新的头与尾pair<ListNode*, ListNode*> myReverse(ListNode* head, ListNode* tail) {ListNode* prev = tail->next;ListNode* p = head;while (prev != tail) {ListNode* nex = p->next;p->next = prev;prev = p;p = nex;}return {tail, head};}ListNode* reverseKGroup(ListNode* head, int k) {ListNode* hair = new ListNode(0);//hair和pre指针hair->next = head;ListNode* pre = hair;while (head) {ListNode* tail = pre;// 查看剩余部分长度是否大于等于 kfor (int i = 0; i < k; ++i) {tail = tail->next;if (!tail) {return hair->next;}}ListNode* nex = tail->next;// 这里是 C++17 的写法,也可以写成// pair<ListNode*, ListNode*> result = myReverse(head, tail);// head = result.first;// tail = result.second;tie(head, tail) = myReverse(head, tail);// 把子链表重新接回原链表pre->next = head;tail->next = nex;pre = tail;head = tail->next;}return hair->next;}
};

思想不难,用到的中间指针很多,画图来理解比较容易。

参考地址:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/solution/k-ge-yi-zu-fan-zhuan-lian-

链表经典题:K个一组翻转链表相关推荐

  1. LeetCode--第25题K个一组翻转链表

    LeetCode–第25题K个一组翻转链表 题目描述 解决方案–C语言 主体是用递归的办法.递归三要素: 1.向上返回什么:一个处理好的子链表 2.返回条件是什么:要么是处于好了子链表,要么是因长度小 ...

  2. Leetcode-递归/反转链表模板-25. K 个一组翻转链表

    题目25. K 个一组翻转链表: 题解: 模拟 以K个为一组,进行常规反转,重点是要保留反转前的头节点,以及第K+1个节点,将其反转之后连接起来 代码: /*** Definition for sin ...

  3. 每隔k次反转一次 链表_leetcode 25 K个一组翻转链表(c++)

    ### 题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 说 ...

  4. leetcode算法题--K 个一组翻转链表

    原题链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ ListNode* reverseList(ListNode* head ...

  5. 由力扣K 个一组翻转链表到360原创题

    前段时间帮对象做360笔试题时,遇到一个没怎么想明白的编程题,直到今天刷力扣遇到了相似的k个一组翻转链表后,想着在做一下那天的编程题,就想着记录一下遇到的难点. 力扣题如下图所示: 360原创题如下: ...

  6. 【Java】【leetcode第25题】K 个一组翻转链表

    文章仅供自己学习记录所用,若有侵权.联系我删除! 接着来个链表题(听说字节考了) [K 个一组翻转链表] 其实这道题是206题和24题结合的一个进阶版本,我觉得关键就是控制范围(反正我自己折磨了很久, ...

  7. [Leedcode][JAVA][第25题][K个一组反转链表][链表][递归]

    [问题描述][第25题][K个一组反转链表][困难] 时间复杂度:O(N^2) 空间复杂度:O(1) ```java 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表.k 是一个正整数, ...

  8. 20200329:K 个一组翻转链表(leetcode25)

    K 个一组翻转链表 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 注意题目里的常数的额外空间的要求,意味着不可以使用栈之类的数据结构. 这道链表题实际就是上一道的进阶版,指定每k个进行翻转 ...

  9. 25. K 个一组翻转链表

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持 ...

最新文章

  1. 某电商平台开发记要——客服系统
  2. 产品功能上线前,如何高效的埋点?
  3. 5.11 学习日记,首页banner做好了
  4. 【bzoj4386】[POI2015]Wycieczki 矩阵乘法
  5. Samba 共享目录设置在Home目录下
  6. 〖Demo〗-- 基于RabbitMQ rpc实现的主机管理
  7. linux虚拟磁带机管理,RHEL6 虚拟磁带机使用指南
  8. 计算机软件专业搞腾讯地图,腾讯地图电脑版
  9. Opencascade TopoDS_Shape Orientation
  10. PHP制作QQ微信支付宝三合一收款码
  11. Android复制assets文件到SD卡
  12. 如何在个人信用报告中添加“本人声明”?
  13. 一寸照片压缩到20k_师大er:关于证件照你需要知道这些干货!(/^^)/ 顺便免费冲印高清照片~...
  14. php教程--案例4(判断闰年)
  15. android 图片ps处理图片大小,【精】【教程】用Photoshop调整图片大小,以方便上传到论坛...
  16. 安装anaconda和tensorflow
  17. 商汤实习面试-见习视觉研究员面试
  18. 为什么工具类App,都要做一个社区?
  19. 智能家居创意DIY之智能灯泡
  20. Windows下Scala+Spark+IDEA+Hadoop环境搭建

热门文章

  1. 【Flutter】Flutter 拍照示例 ( 浮动按钮及点击事件 | 底部显示按钮组件 | 手势检测器组件 | 拍照并获取当前拍摄照片 | 从相册中选择图片 )
  2. 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )
  3. Swagger 入门使用
  4. Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理
  5. PHP调试的时候遇到Warning: session_start() [function.session-
  6. 【转】 Android - LayoutInflate用法
  7. Java 基础数据类型
  8. ORACLE的ASM
  9. 【打CF,学算法——二星级】Codeforces Round #313 (Div. 2) B. Gerald is into Art(水题)...
  10. Scala基础 - 下划线使用指南