欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2.两数相加

程序员文章站 2022-04-17 15:51:48
...

题目地址:两数相加

一开始看着题目有点绕,后来大概明白就是从前到后节点相加,当大于9时取余赋值,并在之后运算时进一,结果采用尾插法。

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head = new ListNode(-1);
        ListNode p=l1;
        ListNode q=l2;
        ListNode chs = head;
        int count = 0;  //进位时加上
        while(p!=null||q!=null){
            int a = 0;
            int b = 0;
            if(p!=null)
                a=p.val;
            if(q!=null)
                b=q.val;
            int sum = count+a+b;
            count = sum/10;
            chs.next=new ListNode(sum%10);
            chs = chs.next;
            if(p!=null)
                p=p.next;
            if(q!=null)
                q=q.next;
        }
        return head.next;
    }
}

结果:

2.两数相加

发现漏了一种情况,在最后相加时,可能产生再次进位的情形。在最后返回之前,再进行一次判断:

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head = new ListNode(-1);
        ListNode p=l1;
        ListNode q=l2;
        ListNode chs = head;
        int count = 0;  //进位时加上
        while(p!=null||q!=null){
            int a = 0;
            int b = 0;
            if(p!=null)
                a=p.val;
            if(q!=null)
                b=q.val;
            int sum = count+a+b;
            count = sum/10;
            chs.next=new ListNode(sum%10);
            chs = chs.next;
            if(p!=null)
                p=p.next;
            if(q!=null)
                q=q.next;
        }
        if(count==1){
            chs.next=new ListNode(1);
        }
        return head.next;
    }
}

结果:

2.两数相加

相关标签: LeetCode刷题之旅