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。
真实丢人。

浙公网安备 33010602011771号