首页 > 其他分享 >链表练习——两数求和

链表练习——两数求和

时间:2023-02-23 23:44:09浏览次数:25  
标签:ListNode val 求和 练习 next 链表 l2 l1

先看题目:

  

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

 

示例 1:

 

 

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

 题目分析:

(1)链表中的数字是逆序存储的

比如321,他的链表结构是 1  ——>  2 ——>  3。456,他的链表结构是 6 ——> 5 ——> 4。

在计算时我们遍历两个链表的第一位是数字的个位:

  首先我们要返回一个链表,先定义一个头节点,用来初始化链表,定义一个进制位变量用来存储需要进位的数字(要在遍历两条链表之前定义,因为两个链表的最后一个节点之和要进位时需要在建立一个尾节点)。然后遍历两个链表,首先我们先思考一下两条链表怎么相加,就是每一个节点的val值相加,前提是个十百千....位都要对齐做运算。如果一个数是321,另一个数是12,那么运算过程是

1 + 1, 2 + 2, 3 + 0。所以我们是要遍历完两个链表的,虽然链表的长度可能不一致,但是当一条链表长度不够(也就是节点为null),我们需要将这个节点的val设为 0。

  上代码,这种简单过程就不写注释了。

/**
 * 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 addTwoNumbers(ListNode l1, ListNode l2) {
       
       ListNode pre = new ListNode();
        ListNode cur = pre;
        int jinwei = 0;
        while(l1 != null || l2 != null)
        {
           int val1 = l1 == null ? 0 : l1.val;
           int val2 = l2 == null ? 0 : l2.val;

           int sum = val1 + val2  + jinwei;
           jinwei = sum / 10;
           sum = sum % 10;

           cur.next = new ListNode(sum);
            cur = cur.next;
           if(l1 != null)
           l1 = l1.next;
           if(l2 != null)
            l2 = l2.next;
        }

        if(jinwei == 1){
            cur.next = new ListNode(jinwei);
        }
        return pre.next;
    }
}

 

标签:ListNode,val,求和,练习,next,链表,l2,l1
From: https://www.cnblogs.com/20203923rensaihang/p/17149877.html

相关文章

  • misc----练习------2023.2.22
    ------------恢复内容开始------------1,心仪的公司---攻防世界打开发现是一个叫webshell的流量包,打开用httpcontains"shell"过滤,得到一个jpeg的流量,点开划到最下即有fl......
  • 2022-2023-1《ICPC数据结构与算法》第一次练习题
    7-5环形解密(简)这个题直接就是取模向前移动和向后移动#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<vector>#includ......
  • 每日练习2.23
    每日总结:所花时间:1h(代码量:0行博客量:1篇————————————~~~~~~刷~~~~~————————————————今天没有进行过多的代码的写入,主要......
  • 华为认证 Datacom 练习题
    1(单选题)下列配置默认路由的命令中,正确的是()。A、[Huawei]iproute-static0.0.0.00.0.0.0192.168.1.1B、[Huawei-Serial0]iproute-static0.0.0.00.0.0.00.0.0.0C、[......
  • Python练习--简单练习(一看就能写出来的代码)
    两数之和数字的阶乘求圆的面积(输入半径,求解圆的面积)求区间内所有素数的和求前N个数字的平方和......
  • 求和案例vue版
    首先需要做的效果:  静态样式<divid="app"><h1>当前总数为:{{nbr}}</h1><selectv-model.number="n"><optionvalue="1">1</op......
  • php-mysql 函数练习和使用!
    1.回顾:上篇学习和使用了wamp+eclipse的环境搭建2.这篇将学习一个例子,使用mysql函数来学习3.基本操作  3.1设置编码header("Content-type:text/html;charset=utf-8......
  • 2.22题目练习
    题目一:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输......
  • 红帽认证RedHat 练习题
    1.1常用Shell命令​1-1创建名为test的目录,并在其下创建file目录​1-2删除test目录下的file目录,同时将test目录一并删除​1-3将用户目录切换到/home​1-4显示当前工作路径​1......
  • 学数据结构第一个是学链表?不,是它
    大家好,我是五月。前言以前很多小白都来询问过关于数据结构的内容,问题基本都是想学链表,堆栈、队列、树这些该怎么下手。 一方面我表示赞许,另一方面又觉得他们对数......