leetcode.2.两数相加

考察的是链表的插入,但是有很多小细节,加上很久没用链表了,一开始有点无从下手。

思路:用一个标识符count记录是否有进位,可以得到count=(l1.val+l2.val+count)/10,而应该存入的value=(l1.val+l2.val+count)%10。在此基础上慢慢补全其他细节。

已解决问题:①对链表的插入原理掌握不牢靠。②考虑细节没考虑全面。

①链表的插入,除了需要一个存放的链表l3,一个临时的节点node,还需要在l3的基础上可以进行跟进的尾指针(?)r。要保证node挂到原先尾指针的next,之后也要对尾指针进行更新,保证它一直指向链表最后一个节点。

 

 

②刚开始只考虑到两个链表长度不匹配的情况下,就将节点为null的那个链表的val设置为0,忘记了next,也因此引发了问题③

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
       int count=0;
        ListNode l3=new ListNode(0);
        ListNode root=l3;
        root.next=null;
        while(l1!=null||l2!=null||count!=0)
        {
            int l1val=(l1!=null)?l1.val:0;
            int l2val=(l2!=null)?l2.val:0;
            ListNode node=new ListNode(0);
            node.val=(l1val+l2val+count)%10;
            count=(l1val+l2val+count)/10>0?1:0;
            if(l1 != null) l1 = l1.next;
            if(l2 != null) l2 = l2.next;
            root.next=node;
            root=node;
            
        }
        root.next=null;
        
    return
l3.next; }

③如下:

l1.val=(l1!=null)?l1.val:0;
l2.val=(l2!=null)?l2.val:0;

这两行代码一直报Java.lang.NullPointerException, 本鶸刚开始脑子转不过弯来, 后来想清楚了——节点都null了, 怎么可能再去设置它的val。

真实丢人。

posted @ 2019-12-04 14:28  鶸1998  阅读(218)  评论(0)    收藏  举报