2.添加两个数字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/L_i_n_o/article/details/79008211

给你两个非空链表,表示两个非负整数。数字以相反的顺序存储,每个节点包含一个数字。添加这两个数字并将其作为链接列表返回。您可以假定这两个数字不包含任何前导零,除了数字0本身。

例:

输入:(2→4→3)+(5→6→4)
 输出: 7→0→8
 说明: 342 + 465 = 807。










答案:

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    ListNode dummyHead = new ListNode(0);
    ListNode p = l1, q = l2, curr = dummyHead;
    int carry = 0;
    while (p != null || q != null) {
        int x = (p != null) ? p.val : 0;
        int y = (q != null) ? q.val : 0;
        int sum = carry + x + y;
        carry = sum / 10;
        curr.next = new ListNode(sum % 10);
        curr = curr.next;
        if (p != null) p = p.next;
        if (q != null) q = q.next;
    }
    if (carry > 0) {
        curr.next = new ListNode(carry);
    }
    return dummyHead.next;
}

猜你喜欢

转载自blog.csdn.net/L_i_n_o/article/details/79008211