2018-11-26 两数相加

2018-11-26  本文已影响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;
}
上一篇下一篇

猜你喜欢

热点阅读