package com.interview.books.leetcodeoj;
import com.interview.leetcode.utils.ListNode;
/**
* Created_By: stefanie
* Date: 14-12-18
* Time: 上午10:32
*/
public class LOJ2_AddTwoNumber {
//1. dummy node and carry
//2. move prev, l1, l2 one step forward
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null) return l2;
if(l2 == null) return l1;
ListNode dummy = new ListNode(0);
ListNode prev = dummy;
int carry = 0;
while(l1 != null || l2 != null){
int v1 = l1 != null? l1.val : 0;
int v2 = l2 != null? l2.val : 0;
int sum = v1 + v2 + carry;
prev.next = new ListNode(sum % 10);
prev = prev.next;
carry = sum / 10;
l1 = l1 != null? l1.next : null;
l2 = l2 != null? l2.next : null;
}
if(carry != 0) prev.next = new ListNode(carry);
return dummy.next;
}
}