Add 2 numbers
没啥技巧,要注意edge case。[5]+[5]这种情况没有把握好,应该always记得append还没加完的进位的数字!
if (add > 0){ //Something did not finish
curr.next = new ListNode (add);
}
而且从白板上抄到电脑里不要写错hhhhh(yep)。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode (0);
ListNode curr = dummyHead;
int add = 0;
while(l1 != null || l2 != null){
int val1 = l1 == null ? 0 : l1.val;
int val2 = l2 == null ? 0 : l2.val;
int temp = (val1 + val2 + add) % 10;
add = (val1 + val2 + add) / 10;
curr.next = new ListNode (temp);
curr = curr.next;
if(l1 != null){
l1 = l1.next;
}
if(l2 != null){
l2 = l2.next;
}
}
if (add > 0){ //Something did not finish
curr.next = new ListNode (add);
}
return dummyHead.next;
}
}