LeetCode 2074. 反转偶数长度组的节点(链表)
文章目录
- 1. 题目
- 2. 解题
1. 题目
给你一个链表的头节点 head 。
链表中的节点 按顺序 划分成若干 非空 组,这些非空组的长度构成一个自然数序列(1, 2, 3, 4, …)。一个组的 长度 就是组中分配到的节点数目。换句话说:
- 节点 1 分配给第一组
- 节点 2 和 3 分配给第二组
- 节点 4、5 和 6 分配给第三组,以此类推
注意,最后一组的长度可能小于或者等于 1 + 倒数第二组的长度 。
反转 每个 偶数 长度组中的节点,并返回修改后链表的头节点 head 。
示例 1:
输入:head = [5,2,6,3,9,1,7,3,8,4]
输出:[5,6,2,3,9,1,4,8,3,7]
解释:
- 第一组长度为 1 ,奇数,没有发生反转。
- 第二组长度为 2 ,偶数,节点反转。
- 第三组长度为 3 ,奇数,没有发生反转。
- 最后一组长度为 4 ,偶数,节点反转。
示例 2:
输入:head = [1,1,0,6]
输出:[1,0,1,6]
解释:
- 第一组长度为 1 ,没有发生反转。
- 第二组长度为 2 ,节点反转。
- 最后一组长度为 1 ,没有发生反转。
示例 3:
输入:head = [2,1]
输出:[2,1]
解释:
- 第一组长度为 1 ,没有发生反转。
- 最后一组长度为 1 ,没有发生反转。示例 4:
输入:head = [8]
输出:[8]
解释:只有一个长度为 1 的组,没有发生反转。提示:
链表中节点数目范围是 [1, 10^5]
0 <= Node.val <= 10^5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-nodes-in-even-length-groups
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 链表反转
prevtail
记录前一段的末尾,L, R
记录当前段的起始和结束,nthead
记录下一段的开始
/*** 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* reverseEvenLengthGroups(ListNode* head) {int num = 1, len = 0;ListNode* prevtail = head, *L = NULL, *R = NULL, *cur = head, *nthead = NULL;while(cur){L = R = cur->next;num++;int n = num;len = 0; while(cur->next && n--){len++;R = cur->next;cur = cur->next;}nthead = R ? R->next : NULL;if(len%2==0){if(R)R->next = NULL;//断开,准备反转当前 [L,R]prevtail->next = revlist(L);cur = prevtail = L;if(cur)cur->next = nthead;}else{cur = prevtail = R;}}return head;}ListNode* revlist(ListNode* head){ListNode* prev = NULL, *cur = head, *nt = NULL;while(cur){nt = cur->next;cur->next = prev;prev = cur;cur = nt;}return prev;}
};
876 ms 321.8 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 2074. 反转偶数长度组的节点(链表)相关推荐
- 2074. 反转偶数长度组的节点
2074. 反转偶数长度组的节点 给你一个链表的头节点 head . 链表中的节点 按顺序 划分成若干 非空 组,这些非空组的长度构成一个自然数序列(1, 2, 3, 4, -).一个组的 长度 就是 ...
- leetcode面试题 04.03. 特定深度节点链表(bfs)
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组.示例:输入:[1,2,3,4,5,null,7, ...
- leetcode —— 面试题 04.03. 特定深度节点链表
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组. 示例: 解题思路:使用常规的广度优先遍历就可以 ...
- LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
- leetcode 344. 反转字符串 541. 反转字符串 II 双指针解
目录 leetcode 344.反转字符串 1.题目 2.思考 leetcode 541. 反转字符串 II 1.题目 2.思考 leetcode 344.反转字符串 1.题目 2.思考 典型的双指针 ...
- LeetCode 92. 反转链表 II(双指针)
1. 题目 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例:输入: 1->2->3->4->5->NULL, ...
- 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串
LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...
- Leetcode 92反转链表
题目 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m ...
- 学长冷月带你怒刷LeetCode之反转链表
本文目录 前言 题目描述 冷月题解 总结一下 前言 链表的操作是数据结构中最基础的算法之一,反转列表也是一道经典的笔试题.很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间 ...
最新文章
- 2021年大数据Spark(十七):Spark Core的RDD持久化
- 史上最大中文知识图谱,规模达1.4亿,现在开源可下载,还有配套聊天机器人API...
- 怎么改变光标Cursor(5种方法)
- PopTheBubble —测量媒体偏差的产品创意
- 【知识图谱】一、知识表示与知识建模
- 【Flask】下载多个文件
- 6.wireshark使用全解
- pandas-pandas.Categorical
- SQL中SELECT INTO和INSERT INTO SELECT语句介绍
- ipq4019 kernel 报错spi-nand spi0.1: spi transfer failed: -110
- his系统计算机软件,医学系统(一)医院常用的软件系统:PACS系统、HIS系统、RIS系统、LIS系统、CIS系统...
- 基于W800的AIOT离在线一体方案说明 (阿里飞燕+离线语音控制)
- 树莓派Ubuntu18.04使用及联网
- HTML特殊字符符号大全
- # ubuntu 16.04 vivado2017.4版本用JTAG烧写usrpx310的固件
- Spring_背诵英文单词
- 数据库JDBC(知识点整理)
- 【ThreeJs】(2)照相机 | 正交投影照相机 | 透视投影照相机
- 中国房价下跌序幕刚刚拉开
- 快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs
热门文章
- 打印hello world java_java – 如何打印“hello world”?
- mysql用supervisor管理_Supervisor使用详解
- 计算机研究所专业课,【择校必看】十三所计算机专业课只考数据结构的985院校!...
- 摇一摇 声音 html5,HTML5摇一摇以及音频播放问题优化总结
- Opencv 图像增强算法 图像检测结果及代码
- jdbc mysql demo_JDBC_demo:java连接mysql过程
- uboot移植——使用三星官方的uboot进行移植
- C语言srand((unsigned)time(NULL))…
- 信号量进程同步与互斥
- Linux 安装配置JDK 、 MySQL 、nginx