LeetCode 2. 两数相加

648 阅读1分钟

leetcode-cn.com/problems/ad…

思路:考虑下面几种情况

1、考虑最高位进位

2、考虑l1和l2长度不一样

3、考虑l1、l2为空

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    int add = 0;
    ListNode retNode = new ListNode(0);
    ListNode curL1 = l1;
    ListNode curL2 = l2;
    ListNode curRet = retNode;
    // 2 考虑l1与l2长度不一样
    while (curL1 != null || curL2 != null) {
        curRet.next = new ListNode(0);
        curRet = curRet.next;
        int tmpSum = (curL1 != null ? curL1.val : 0) + (curL2 != null ? curL2.val : 0) + add;
        add = tmpSum / 10;
        curRet.val = tmpSum % 10;
        // 3 考虑l1或l2为空的情况
        curL1 = curL1 == null ? curL1 : curL1.next;
        curL2 = curL2 == null ? curL2 : curL2.next;
    }
    // 1 考虑最高位进位
    if (add > 0) {
        curRet.next = new ListNode(add);
    }
    return retNode.next;
}