[LeetCode]2 Add Two Numbers

https://oj.leetcode.com/problems/add-two-numbers/

http://fisherlei.blogspot.com/2013/01/leetcode-add-two-numbers-solution.html

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        
        // 同时遍历两个list 直至两个list都为空
        // 确定两个值 如果某listnode为空 默认为0
        // 计算 newnode的值 和carry
        // 完成遍历,如果carry==true, 新增一个head
        
        ListNode toReturn = null;
        ListNode lastNode = null;
        
        int carry = 0;
        while (l1 != null || l2 != null)
        {
            int v1 = 0;
            if (l1 != null)
            {
                v1 = l1.val;
                l1 = l1.next;
            }
            
            int v2 = 0;
            if (l2 != null)
            {
                v2 = l2.val;
                l2 = l2.next;
            }
            
            int sum = v1 + v2 + carry;
            ListNode newNode = new ListNode(sum % 10);
            carry = sum >= 10 ? 1 : 0;
            
            if (lastNode != null)
            {
                lastNode.next = newNode;
            }
            lastNode = newNode;
            
            if (toReturn == null)
                toReturn = newNode;
        }
        
        if (carry == 1)
        {
            ListNode newNode = new ListNode(1);
            lastNode.next = newNode;
        }
        
        return toReturn;
    }
}


你可能感兴趣的:(LeetCode)