美文网首页LeetCode
[LeetCode] 2. Add Two Numbers

[LeetCode] 2. Add Two Numbers

作者: xxx亦凡桑 | 来源:发表于2017-04-25 16:30 被阅读0次

    You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8


    </br>

    Solution

    The main issue here is to consider that the sum of two number may overflow, which is to say the sum is above 10; therefore, we have to carry the 10 to the next digit. And the maximum possible sum of the two numbers can be 19, so the carry can be either 1 or 0.

    Other than that, we only have to take care of the pointer and watch out some special cases like empty lists, different length and possible extra carry to the end.

    The code is shown as below.

    Java

    public class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            
            ListNode dummy = new ListNode(0);
            ListNode p=l1,q=l2,curr=dummy;
            
            int carry = 0;
            
            while(p != null || q !=null)
            {
                int x = p != null ? p.val:0;
                int y = q != null ? q.val:0;
                
                int sum = x+y+carry;
                carry = sum / 10;
                
                curr.next = new ListNode(sum % 10);
                if(p!=null) p = p.next;
                if(q!=null) q = q.next;
                curr = curr.next;
                
            }
            
            if(carry >0){
                
                curr.next = new ListNode(carry);
            }
            return dummy.next;
            
        }
    }
    

    </br>

    Complexity Analysis

    Time Complexity: O(n).
    Space Complexity: O(n). For the creation of the new list.
    </br>

    相关文章

      网友评论

        本文标题:[LeetCode] 2. Add Two Numbers

        本文链接:https://www.haomeiwen.com/subject/yqbvzttx.html