> 文档中心 > 你今天学算法了吗? 打卡第五天

你今天学算法了吗? 打卡第五天

 


目录

 一、题目

1、题目描述

2、基础框架

3、原题链接

二、解题报告

1、思路分析

2、时间复杂度

3、代码详解

三、本题小知识


 一、题目

1、题目描述

  

给你一个链表的头节点 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 * 105] 内
0 <= Node.val <= 1000
不 存在连续两个 Node.val == 0 的节点

2、基础框架

   Java 版本给出的基础框架代码如下:   

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode() {} *     ListNode(int val) { this.val = val; } *     ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution {    public ListNode mergeNodes(ListNode head) {    }}

 

 

3、原题链接

    LeetCode 2181. 合并零之间的节点

二、解题报告

1、思路分析

新建链表装入新的节点值

遇到0跳过,结点后移,不为0,则值累加赋给新的结点的值

详见看代码!!!

2、时间复杂度

空空空,学会了补

3、代码详解

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode() {} *     ListNode(int val) { this.val = val; } *     ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution {    public ListNode mergeNodes(ListNode head) {     //定义并初始化结果链表      ListNode ret = new ListNode(0);      //记录头结点      ListNode ans = ret;      //定义用于遍历的结点      ListNode find=head;      //若链表为空则返回空      if(head==null){   return null;      }      //开始遍历,临界条件为最后以个结点      while(find.next != null){   //查找结点值为0的   if(find.val==0){     //跳过当前结点     find=find.next;     //创建一个新的结果结点来存储0——0之间的结点值得和     ret.next = new ListNode(0);     //移动结果结点     ret=ret.next;     //结束本次循环,重复操作     continue;   }else{//结点值不为0,则累加存入ret.val += find.val;   }   //结点后移继续查找   find=find.next;      }      return ans.next;    }}

三、本题小知识

  链表,数据结构

你今天学算法了吗? 打卡第五天 阅读世界,共赴山海 你今天学算法了吗? 打卡第五天 423全民读书节,邀你共读