链表经典题:K个一组翻转链表
题目:
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。
示例 :
给定这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 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个一组翻转链表相关推荐
- LeetCode--第25题K个一组翻转链表
LeetCode–第25题K个一组翻转链表 题目描述 解决方案–C语言 主体是用递归的办法.递归三要素: 1.向上返回什么:一个处理好的子链表 2.返回条件是什么:要么是处于好了子链表,要么是因长度小 ...
- Leetcode-递归/反转链表模板-25. K 个一组翻转链表
题目25. K 个一组翻转链表: 题解: 模拟 以K个为一组,进行常规反转,重点是要保留反转前的头节点,以及第K+1个节点,将其反转之后连接起来 代码: /*** Definition for sin ...
- 每隔k次反转一次 链表_leetcode 25 K个一组翻转链表(c++)
### 题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 说 ...
- leetcode算法题--K 个一组翻转链表
原题链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ ListNode* reverseList(ListNode* head ...
- 由力扣K 个一组翻转链表到360原创题
前段时间帮对象做360笔试题时,遇到一个没怎么想明白的编程题,直到今天刷力扣遇到了相似的k个一组翻转链表后,想着在做一下那天的编程题,就想着记录一下遇到的难点. 力扣题如下图所示: 360原创题如下: ...
- 【Java】【leetcode第25题】K 个一组翻转链表
文章仅供自己学习记录所用,若有侵权.联系我删除! 接着来个链表题(听说字节考了) [K 个一组翻转链表] 其实这道题是206题和24题结合的一个进阶版本,我觉得关键就是控制范围(反正我自己折磨了很久, ...
- [Leedcode][JAVA][第25题][K个一组反转链表][链表][递归]
[问题描述][第25题][K个一组反转链表][困难] 时间复杂度:O(N^2) 空间复杂度:O(1) ```java 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表.k 是一个正整数, ...
- 20200329:K 个一组翻转链表(leetcode25)
K 个一组翻转链表 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 注意题目里的常数的额外空间的要求,意味着不可以使用栈之类的数据结构. 这道链表题实际就是上一道的进阶版,指定每k个进行翻转 ...
- 25. K 个一组翻转链表
25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持 ...
最新文章
- 某电商平台开发记要——客服系统
- 产品功能上线前,如何高效的埋点?
- 5.11 学习日记,首页banner做好了
- 【bzoj4386】[POI2015]Wycieczki 矩阵乘法
- Samba 共享目录设置在Home目录下
- 〖Demo〗-- 基于RabbitMQ rpc实现的主机管理
- linux虚拟磁带机管理,RHEL6 虚拟磁带机使用指南
- 计算机软件专业搞腾讯地图,腾讯地图电脑版
- Opencascade TopoDS_Shape Orientation
- PHP制作QQ微信支付宝三合一收款码
- Android复制assets文件到SD卡
- 如何在个人信用报告中添加“本人声明”?
- 一寸照片压缩到20k_师大er:关于证件照你需要知道这些干货!(/^^)/ 顺便免费冲印高清照片~...
- php教程--案例4(判断闰年)
- android 图片ps处理图片大小,【精】【教程】用Photoshop调整图片大小,以方便上传到论坛...
- 安装anaconda和tensorflow
- 商汤实习面试-见习视觉研究员面试
- 为什么工具类App,都要做一个社区?
- 智能家居创意DIY之智能灯泡
- Windows下Scala+Spark+IDEA+Hadoop环境搭建
热门文章
- 【Flutter】Flutter 拍照示例 ( 浮动按钮及点击事件 | 底部显示按钮组件 | 手势检测器组件 | 拍照并获取当前拍摄照片 | 从相册中选择图片 )
- 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )
- Swagger 入门使用
- Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理
- PHP调试的时候遇到Warning: session_start() [function.session-
- 【转】 Android - LayoutInflate用法
- Java 基础数据类型
- ORACLE的ASM
- 【打CF,学算法——二星级】Codeforces Round #313 (Div. 2) B. Gerald is into Art(水题)...
- Scala基础 - 下划线使用指南