当前位置: 首页 > news >正文

2181、合并零之间的节点

2181、[中等] 合并零之间的节点

1、问题描述:

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

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

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

2、代码思路:

  1. 跳过第一个节点:链表的开头和结尾都包含值为 0 的节点,我们从第二个节点开始处理(即 head->next)。
  2. 累加节点值:对于每两个 0 之间的节点,累加它们的值。
  3. 遇到 0 时创建新节点:当遇到 0 时,将前面累加的值创建一个新的节点,插入到新链表中。
  4. 继续遍历:继续遍历链表,重复上述步骤,直到遍历完整个链表。返回合并后的新链表,忽略初始的哨兵节点。

3、代码实现与详细注释

class Solution {
public:ListNode* mergeNodes(ListNode* head) {// 创建一个新的链表头,用来存储合并后的结果链表ListNode newhead; // 一个新链表的头节点(哨兵节点)ListNode *newcur = &newhead; // 用于遍历新链表的指针,初始化指向哨兵节点ListNode *cur = head->next;  // 当前链表从 head->next 开始,因为 head 是 0,忽略它int sum = 0; // 用于累加两个 0 之间的节点的值// 遍历原始链表,直到结束while (cur) {// 遇到值为 0 的节点时,说明需要合并并创建新节点if (cur->val == 0) {// 创建新节点,节点值为前面累加的 sum 值ListNode* newnode = new ListNode(sum);sum = 0; // 重置 sum,准备下一组合并newcur->next = newnode; // 将新节点链接到结果链表newcur = newcur->next;  // 移动指针到新节点,准备接受下一个合并节点} else {// 如果不是 0,则累加当前节点的值sum += cur->val;}cur = cur->next; // 移动到下一个节点}// 确保新链表的末尾指向 nullptrnewcur->next = nullptr;// 返回合并后链表的头节点,跳过哨兵节点return newhead.next;}
};

4、时间复杂度:

  • 时间复杂度:O(n),其中 n 是链表中节点的数量。我们只需要遍历链表一次。
  • 空间复杂度:O(1),只用了常数空间来存储累加值和指针。
http://www.lryc.cn/news/475574.html

相关文章:

  • powerlaw:用于分析幂律分布的Python库
  • 工作管理实战指南:利用Jira、Confluence等Atlassian工具打破信息孤岛,增强团队协作【含免费指南】
  • JAVA语言多态和动态语言实现原理
  • 阿里云-防火墙设置不当导致ssh无法连接
  • 使用WebAssembly优化Web应用性能
  • 软件测试模型
  • 动态规划——两个数组的dp问题
  • 视频QoE测量学习笔记(二)
  • RSA算法详解:原理与应用
  • YOLOv6-4.0部分代码阅读笔记-effidehead_fuseab.py
  • 特朗普概念股DJT股票分析:为美国大选“黑天鹅事件”做好准备
  • 【MySQL】 运维篇—故障排除与性能调优:常见故障的排查与解决
  • Android R S T U版本如何在下拉栏菜单增加基本截图功能
  • C#二叉树原理及二叉搜索树代码实现
  • .eslintrc.js 的解释
  • 确保企业架构与业务的一致性与合规性:数字化转型中的关键要素与战略实施
  • goframe开发一个企业网站 前端界面 拆分界面7
  • Postman断言与依赖接口测试详解!
  • github打不开网络问题
  • 智能教育工具:基于SpringBoot的在线试题库
  • typescript 如何跳过ts类型检查?
  • 详解ReentrantLock--三种加锁方式
  • SQL 基础语法(一)
  • Python酷库之旅-第三方库Pandas(190)
  • Spring学习笔记_19——@PostConstruct @PreDestroy
  • 《云计算网络技术与应用》实训8-1:OpenvSwitch简单配置练习
  • 【架构艺术】服务架构稳定性的基础保障
  • Python中使用pip换源的详细指南
  • 一站打包国际智慧教育自主学练软件资源
  • 用股票API获取高频行情数据来实现数据分析和量化