栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

力扣刷题2.两数相加

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣刷题2.两数相加



与二进制相加和的思路一致,循环链表,相当于从低位加到高位,同时要考虑进位,设当前相加的数为m和n,进位为carry,则每个位置上的数为(m+n+carry),进位为(m+n+carry)/10,如果两个链表的长度不同,则可以认为长度短的链表的后面有若干个 0 。
此外,如果链表遍历结束后,有carry>0,还需要在答案链表的后面附加一个节点,节点的值为 carry。

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
       ListNode p1 = l1,p2 = l2;
       ListNode dump = new ListNode(-1);
       ListNode p = dump;
       int carry = 0,newVal = 0;
       while(p1!=null||p2!=null||carry>0){
           newVal = (p1==null?0:p1.val)+(p2==null?0:p2.val)+carry;
           carry = newVal/10;
           newVal = newVal%10;
           p.next = new ListNode(newVal);//注意:是p.next而不是p
           p1 = p1==null?null:p1.next;
           p2 = p2==null?null:p2.next;
           p = p.next;
       }
       return dump.next;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920967.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号