0
点赞
收藏
分享

微信扫一扫

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

三分梦_0bc3 2022-04-22 阅读 51
java算法

 


目录

 一、题目

1、题目描述

2、基础框架

3、原题链接

二、解题报告

1、思路分析

2、时间复杂度

3、代码详解

三、本题小知识


 一、题目


1、题目描述

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;
    }
}

三、本题小知识

  链表,数据结构

举报

相关推荐

0 条评论