文章目录

  • 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. 反转偶数长度组的节点(链表)相关推荐

  1. 2074. 反转偶数长度组的节点

    2074. 反转偶数长度组的节点 给你一个链表的头节点 head . 链表中的节点 按顺序 划分成若干 非空 组,这些非空组的长度构成一个自然数序列(1, 2, 3, 4, -).一个组的 长度 就是 ...

  2. leetcode面试题 04.03. 特定深度节点链表(bfs)

    给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组.示例:输入:[1,2,3,4,5,null,7, ...

  3. leetcode —— 面试题 04.03. 特定深度节点链表

    给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组. 示例: 解题思路:使用常规的广度优先遍历就可以 ...

  4. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  5. leetcode 344. 反转字符串 541. 反转字符串 II 双指针解

    目录 leetcode 344.反转字符串 1.题目 2.思考 leetcode 541. 反转字符串 II 1.题目 2.思考 leetcode 344.反转字符串 1.题目 2.思考 典型的双指针 ...

  6. LeetCode 92. 反转链表 II(双指针)

    1. 题目 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例:输入: 1->2->3->4->5->NULL, ...

  7. 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

    LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...

  8. Leetcode 92反转链表

    题目 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m ...

  9. 学长冷月带你怒刷LeetCode之反转链表

    本文目录 前言 题目描述 冷月题解 总结一下 前言 链表的操作是数据结构中最基础的算法之一,反转列表也是一道经典的笔试题.很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间 ...

最新文章

  1. 2021年大数据Spark(十七):Spark Core的RDD持久化
  2. 史上最大中文知识图谱,规模达1.4亿,现在开源可下载,还有配套聊天机器人API...
  3. 怎么改变光标Cursor(5种方法)
  4. PopTheBubble —测量媒体偏差的产品创意
  5. 【知识图谱】一、知识表示与知识建模
  6. 【Flask】下载多个文件
  7. 6.wireshark使用全解
  8. pandas-pandas.Categorical
  9. SQL中SELECT INTO和INSERT INTO SELECT语句介绍
  10. ipq4019 kernel 报错spi-nand spi0.1: spi transfer failed: -110
  11. his系统计算机软件,医学系统(一)医院常用的软件系统:PACS系统、HIS系统、RIS系统、LIS系统、CIS系统...
  12. 基于W800的AIOT离在线一体方案说明 (阿里飞燕+离线语音控制)
  13. 树莓派Ubuntu18.04使用及联网
  14. HTML特殊字符符号大全
  15. # ubuntu 16.04 vivado2017.4版本用JTAG烧写usrpx310的固件
  16. Spring_背诵英文单词
  17. 数据库JDBC(知识点整理)
  18. 【ThreeJs】(2)照相机 | 正交投影照相机 | 透视投影照相机
  19. 中国房价下跌序幕刚刚拉开
  20. 快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs

热门文章

  1. 打印hello world java_java – 如何打印“hello world”?
  2. mysql用supervisor管理_Supervisor使用详解
  3. 计算机研究所专业课,【择校必看】十三所计算机专业课只考数据结构的985院校!...
  4. 摇一摇 声音 html5,HTML5摇一摇以及音频播放问题优化总结
  5. Opencv 图像增强算法 图像检测结果及代码
  6. jdbc mysql demo_JDBC_demo:java连接mysql过程
  7. uboot移植——使用三星官方的uboot进行移植
  8. C语言srand((unsigned)time(NULL))…
  9. 信号量进程同步与互斥
  10. Linux 安装配置JDK 、 MySQL 、nginx