美文网首页
Leetcode解题报告 2.Add Two Numbers章

Leetcode解题报告 2.Add Two Numbers章

作者: Mr_void | 来源:发表于2015-12-25 00:45 被阅读0次

    直接上题:

    You are given two linked lists representing two non-negative numbers. 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.

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

    本题的大意是给了两个链表,需要按照类似进位加法的方法把两个链表对应的位加起来,得到一个新的链表。

    大概的解题思路就是每一位对应相加然后再加上一位相加的进位。乍一看很简单,但是有很多边界条件要考虑到。首先如果两个当前节点都不为空的话,那么正常相加;如果其中有一个链表当前节点为空,则只把另外一个链表当前节点的值与上一位的进位相加;如果两个链表当前节点都为空,则再进一位,表示为一个节点。

    Java code:

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
      
        ListNode aiter = l1, biter = l2, result = null,nowiter = null,temp;
        int sum = 0,carry = 0,unit = 0;
        while(aiter != null || biter != null)
        {
            if(aiter != null && biter != null)
            {
                sum = aiter.val + biter.val + carry;
                carry = (sum > 9) ? 1 : 0;
                unit = sum % 10;
                aiter = aiter.next;
                biter = biter.next;
            }
            else if(aiter == null)
            {
                sum = biter.val + carry;
                carry = (sum > 9) ? 1 : 0;
                unit = sum % 10;
                biter = biter.next;
            }
            else if(biter == null)
            {
                sum = aiter.val + carry;
                carry = (sum > 9) ? 1 : 0;
                unit = sum % 10;
                aiter = aiter.next;
            }
            if(result == null){
                result = new ListNode(unit);
                nowiter = result;
                continue;
            }
            temp = new ListNode(unit);
            nowiter.next = temp;
            nowiter = temp;
        }
        if(carry > 0)
        {
            nowiter.next = new ListNode(carry);
        }
        return result;
    }
    

    补充解释一下:result == null 这个判断条件是加入第一个元素时的判断。

    相关文章

      网友评论

          本文标题: Leetcode解题报告 2.Add Two Numbers章

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