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

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

合并零之间的节点

问题描述

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

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

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

示例

示例 1

输入head = [0,3,1,0,4,5,2,0]
输出[4,11]
解释

  • 标记为绿色的节点之和:3 + 1 = 4
  • 标记为红色的节点之和:4 + 5 + 2 = 11

示例 2

输入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

优化前

func mergeNodes(head *ListNode) *ListNode {
	p := head
	res := &ListNode{}
	l := res
	sum := 0
	for p != nil  {
		if p.Val == 0&&p!=head{
			add := &ListNode{}
			add.Val = sum
			l.Next = add
			l = add
			sum = 0
		
		} else {
			sum += p.Val
		}
		p = p.Next
	}
	return res.Next
}

优化后

func mergeNodes(head *ListNode) *ListNode {
    dummy := &ListNode{} // 创建哑结点以简化结果链表的操作
    current := dummy     // 用于构建新链表
    sum := 0             // 用于累加非零节点的值

    for node := head.Next; node != nil; node = node.Next { // 从head.Next开始,跳过第一个零节点
        if node.Val == 0 { // 遇到零节点
            current.Next = &ListNode{Val: sum} // 将累加值作为新节点加入结果链表
            current = current.Next             // 移动到新节点
            sum = 0                            // 重置累加值
        } else {
            sum += node.Val // 累加非零节点的值
        }
    }

    return dummy.Next // 返回结果链表的头节点
}

http://www.kler.cn/a/592892.html

相关文章:

  • 【AI测试必学】DeepSeek API 快速入门:获取 API Key 与调用 API 步骤详解
  • 麒麟服务器操作系统Go环境部署手册
  • 织梦DedeCMS后台发布文章增加“顶”和“踩”默认随机值,并可后台修改
  • Spring Boot 整合 Elasticsearch 实践:从入门到上手
  • 有效防止SSL证书被劫持的策略
  • 路灯安全用电解决方案
  • 力士乐XM42系统Profinet与安川机器人Ethernet/IP通讯转换配置
  • 从零实现B站视频下载器:Python自动化实战教程
  • [力扣]1631. 最小体力消耗路径(bool类型dfs+二分答案/记忆化剪枝/并查集Kruskal思想)
  • 如何用Python和Selenium实现表单的自动填充与提交?
  • [代码规范]1_良好的命名规范能减轻工作负担
  • RabbitMQ相关的面试题
  • STM32 —— MCU、MPU、ARM、FPGA、DSP
  • O(1) 时间插入、删除和获取随机元素——面试经典150题(力扣)
  • OpenHarmony 框架层电池相关重要类解析
  • 【论文阅读】MMedPO: 用临床感知多模态偏好优化调整医学视觉语言模型
  • Vitis 2024.1 无法正常编译custom ip的bug(因为Makefile里的wildcard)
  • 【计算机网络】TCP粘包、拆包的机制
  • ChatGPT与深度学习:探索人工智能的核心技术
  • 虚幻基础:ue自定义类