Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode 2181. 合并零之间的节点(链表)

LeetCode 2181. 合并零之间的节点(链表)

作者头像
Michael阿明
发布于 2022-03-10 10:30:03
发布于 2022-03-10 10:30:03
32000
代码可运行
举报
运行总次数:0
代码可运行

文章目录

1. 题目

给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。 链表的 开端末尾 的节点都满足 Node.val == 0

对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。 然后将所有 0 移除,修改后的链表不应该含有任何 0 。

返回修改后链表的头节点 head 。

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:head = [0,3,1,0,4,5,2,0]
输出:[4,11]
解释:
上图表示输入的链表。修改后的链表包含:
- 标记为绿色的节点之和:3 + 1 = 4
- 标记为红色的节点之和:4 + 5 + 2 = 11

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:head = [0,1,0,3,0,2,2,0]
输出:[1,3,4]
解释:
上图表示输入的链表。修改后的链表包含:
- 标记为绿色的节点之和:1 = 1
- 标记为红色的节点之和:3 = 3
- 标记为黄色的节点之和:2 + 2 = 4
 
提示:
列表中的节点数目在范围 [3, 2 * 10^5]0 <= Node.val <= 1000
不 存在连续两个 Node.val == 0 的节点
链表的 开端 和 末尾 节点都满足 Node.val == 0

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-nodes-in-between-zeros 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • p 记录存值的指针,pp 为 p 的前驱节点,cur 遍历链表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 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* mergeNodes(ListNode* head) {
        ListNode *p = head, *pp = NULL, *cur = head->next;
        while(cur)
        {
            if(cur->val)
            {
                p->val += cur->val;
            }
            else // 遇到0,p 移动
            {
                pp = p;
                p = p->next;
                p->val = 0;
            }
            cur = cur->next;
        }
        pp->next = NULL;
        return head;
    }
};

524 ms 247.1 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Leetcode -2181.合并零之间的节点- 2326.螺旋矩阵Ⅳ】
题目:给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。 对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0 。 返回修改后链表的头节点 head 。
YoungMLet
2024/03/01
1330
(Leetcode 2021 刷题计划) 92. 反转链表 II
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
windism
2021/03/21
3570
LeetCode 2074. 反转偶数长度组的节点(链表)
链表中的节点 按顺序 划分成若干 非空 组,这些非空组的长度构成一个自然数序列(1, 2, 3, 4, …)。一个组的 长度 就是组中分配到的节点数目。换句话说:
Michael阿明
2022/01/07
2650
LeetCode 2074. 反转偶数长度组的节点(链表)
【Leetcode -817.链表组件 -1019.链表中的下一个更大节点】
题目:给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums,该列表是上述链表中整型值的一个子集。 返回列表 nums 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 nums 中)构成的集合。
YoungMLet
2024/03/01
1310
【链表】两两交换链表中的节点,你会了吗?
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
利刃大大
2025/05/21
900
【链表】两两交换链表中的节点,你会了吗?
LeetCode 2130. 链表最大孪生和(链表快慢指针+反转链表+双指针)
在一个大小为 n 且 n 为 偶数 的链表中,对于 0 <= i <= (n / 2) - 1 的 i ,第 i 个节点(下标从 0 开始)的孪生节点为第 (n-1-i) 个节点 。
Michael阿明
2022/03/10
3320
LeetCode 2130. 链表最大孪生和(链表快慢指针+反转链表+双指针)
【LeetCode每日一题】203. 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
公众号guangcity
2021/07/09
2200
【链表】K 个一组翻转链表
​ 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。
利刃大大
2025/05/22
530
【链表】K 个一组翻转链表
【递归】反转链表,你掌握了吗?
​ 对于链表,其实用迭代的方式是比较好理解的,因为把它抽象成一棵二叉树,其实就是一个单分支的二叉树,所以用迭代反而会更好理解,但是为了学习递归,我们要使用递归的思想来解决这道题,其实也不是很难,就是一个逆序的时机问题!
利刃大大
2025/05/22
710
【递归】反转链表,你掌握了吗?
「LeetCode」206. 反转链表
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2:
Maynor
2021/12/07
1530
「LeetCode」206. 反转链表
算法:链表
•https://tianchi.aliyun.com/course/932/14641
用户3578099
2022/03/15
4730
算法:链表
LeetCode 1669. 合并两个链表
给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。
Michael阿明
2021/02/19
2020
LeetCode 1669. 合并两个链表
LeetCode 1721. 交换链表中的节点(快慢指针)
交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。
Michael阿明
2021/02/19
4310
LeetCode 1721. 交换链表中的节点(快慢指针)
【Leetcode -138.复制带随机指针的链表 -2130.链表最大孪生和】
题目:给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。
YoungMLet
2024/03/01
1300
【Leetcode -138.复制带随机指针的链表 -2130.链表最大孪生和】
链表问题-LeetCode 206、234、160(反转,回文,公共结点)
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
算法工程师之路
2019/11/04
3910
链表问题(一)-LeetCode 138、382、203、143、141、142(有环链表入环节点,复制复杂链表)
链表问题(一):LeetCode #138 382 203 143 141 142
算法工程师之路
2019/12/13
4040
leetcode-148. 排序链表(链表排序)
你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?
全栈程序员站长
2022/09/22
3280
【算法学习】链表篇:链表的常用技巧和操作总结
https://blog.csdn.net/2301_80220607/category_12922080.html?spm=1001.2014.3001.5482
GG Bond1
2025/04/10
1230
【算法学习】链表篇:链表的常用技巧和操作总结
为什么链表算法题如此亲睐虚拟节点..........
相信大家在做算法题的时候,会经常用到虚拟节点这个技巧。但是却不明白它会给我们带来多大的便利,今天我们利用几道算法题来分析一下。
破晓的历程
2024/10/12
1160
【Leetcode-链表强训】
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
每天都要进步呀
2023/03/28
2110
【Leetcode-链表强训】
推荐阅读
相关推荐
【Leetcode -2181.合并零之间的节点- 2326.螺旋矩阵Ⅳ】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验