LeetCode 两数相加

本文介绍了如何使用链表逆序存储数字,通过模拟竖式加法计算过程,处理进位并将结果存入新链表的技术,涉及JavaLinkedList类的使用。
摘要由CSDN通过智能技术生成

题目:

思路:本题给了俩个链表,每一位数字按照逆序存储-->个位(第一位)位于链表前方,

直接利用加法的竖式计算,从第一位开始每位依次相加,并加上进位,再将结果保存进需返回的链表【注:任何一位相加若结果大于等于10需取结果的个位数并进位(进位数保存为1)】

下面第一张图片为我们常用的竖式计算,从右到左(依次为个位,十位,百位)依次计算

第二张图片就是本题,由于逆序,故从左到右(依次为个位......)依次计算

【图二右上方第三行为大于或等于10需进位(下图这里发生笔误)】

注:

若给定的俩个链表长度不同,则将较短的后面补0即可;

在最后一位(最高位)计算完毕,如果存在进位为1,则需再定义一个节点存储进位(如70+50,最高位计算结果为12,进位1也需保存);

注意设置头指针front,指向输出链表的头部;

由于下面代码头结点不存储值,故返回的是front.next;

代码:

相关知识:

       1.  取sum的个位可用sum%10,

       2. 取十位可用sum/10(由于sum为整形,故可利用精度丢失来获取十位)

       3.只有当俩个结点都为null时才需结束循环(若一个为空则按数值为0处理)也就是说l1存在或

        l2存在便进入循环

       4. 定义当前结点的下一个结点时可直接用out.next=new ListNode(value);

       5.指向下一个节点l1=l1.next;

拓展知识:

        java中存在LinkedList这一类,位于java.util 包中;

        使用前的引用:import java.util.LinkedList;

        创建方法:LinkedList<E> list = new LinkedList<E>();

        添加元素:list.add( );

        头部添加元素:list.addFirst();        移除:list.removeFirst();        获取:list.getFirst();

        尾部添加元素:list.addLast();        移除:list.removeLast();        获取:list.getLast();

        

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值