2. Add Two Numbers | Java最短代码实现

原题链接: 2. Add Two Numbers

【思路】

本题考查链表的基本操作。题意是将两个链表从右向左逐位相加,进位加入到下一个节点,其实就是模拟两个数相加:

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode ls = new ListNode(0);
        ListNode temp = ls;
        int c = 0;
        while (l1 != null || l2 != null) {
            int sum = c;
            if (l1 != null) {
                sum += l1.val;
                l1 = l1.next;
            }
            if (l2 != null) {
                sum += l2.val;
                l2 = l2.next;
            }
            if (sum >= 10) {
                temp.next = new ListNode(sum - 10);
                c = 1;
            } else {
                temp.next = new ListNode(sum);
                c = 0;
            }
            temp = temp.next;
        }
        temp.next = c == 1 ? new ListNode(1) : null;  //如果c不为0,那么还要新增一个结点
        return ls.next;
    }
1555 / 1555  test cases passed. Runtime: 4 ms  Your runtime beats 35.18% of javasubmissions.
欢迎优化!

你可能感兴趣的:(2. Add Two Numbers | Java最短代码实现)