LeetCode算法第2题:两数相加

问题描述:

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

    假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

    输出:7 -> 0 -> 8

    原因:342 + 465 = 807

思路:

    按照整数相加的方式,两个整数对应的位上相应的数字分别相加,如果结果大于10的话,向上进位

java语言实现:

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

    ListNode head = new ListNode(0);

    ListNode temp = head;

    int sum = 0;

    while(null != l1 || null != l2){

        if(null != l1){

            sum += l1.val;

            l1 = l1.next;

        }

        if(null != l2){

            sum += l2.val;

            l2 = l2.next;

        }

        temp.next = new ListNode(sum % 10);

        sum /= 10;

        temp = temp.next;

    }

    if(sum > 0){

        temp.next = new ListNode(sum);

    }

    return head.next;

}

你可能感兴趣的:(LeetCode算法第2题:两数相加)