当前位置 博文首页 > 龚厂长的博客:leetcode-2. 两数相加

    龚厂长的博客:leetcode-2. 两数相加

    作者:[db:作者] 时间:2021-07-26 17:44

    题目:两数相加
    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    示例:

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出:7 -> 0 -> 8
    原因:342 + 465 = 807

    思路:
    这个题目很简单,就是模拟小学学的加法就可以了,一位一位的加和,如果有进位就进到上一位。
    注意:输入的两个数字可能很大,超过long的表示范围。
    代码如下:

        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            int c=0;//既表示进位又表示结果
            ListNode res=new ListNode();//表示最后的返回结果
            ListNode resList=res;
            while(true){
                if(l1!=null){
                    c+=l1.val;
                    l1=l1.next;
                }
                if(l2!=null){
                    c+=l2.val;
                    l2=l2.next;
                }
                resList.val=c%10;
                c=c>=10?1:0;
                if(l1!=null||l2!=null||c!=0){
                    resList.next=new ListNode();
                    resList=resList.next;
                }else{
                    break;
                }
            }
            return res;
        }
    

    运行结果:
    在这里插入图片描述

    cs
    下一篇:没有了