美文网首页
2018-11-26 两数相加

2018-11-26 两数相加

作者: 天际神游 | 来源:发表于2018-11-26 11:40 被阅读0次

    题目:

    2. 两数相加

    解法:

    因为列表是逆序的, 所以恰好就从个位开始. 所以我们只需要对应的数位相加.
    然后再判断是否进位, 如果进位则进位标志位设置为true, 否则为false. 用于下一阶段的计算之中.
    最后别忘了可能会有进位, 不能直接退出, 需要再判断一下是否再加上一个数位1;

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode res = new ListNode(0);
        ListNode resHead = res;
        boolean isCarry = false;
        while ((l1 != null) || (l2 != null)) {
            int sum = (l1 != null ? l1.val : 0) + (l2 != null ? l2.val : 0);
            sum = isCarry ? (sum + 1) : sum;
    
            isCarry = sum > 9;
            res.next = new ListNode(sum % 10);
    
            res = res.next;
            l1 = l1 != null ? l1.next : null;
            l2 = l2 != null ? l2.next : null;
        }
        res.next = isCarry ? new ListNode(1) : null;
        return resHead.next;
    }
    

    相关文章

      网友评论

          本文标题:2018-11-26 两数相加

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