力扣-2.两数相加

2.两数相加

题目描述就不放了,题目链接
这个题是一个很经典的链表操作的题,这道题需要用到链表的一些基本操作
首先这道题给出的两个链表是不一定等长的,而且数字是逆序存放的。
所以我们可以很方便的先把低位的数加起来,然后再考虑进位的情况下,
把高位的数字直接加到答案链表上。
代码如下:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode answer = new ListNode(0);
        ListNode cur = answer;
        int j = 0, sum = 0;
        while(l1!=null && l2!=null){
            sum = l1.val +l2.val +j;
            cur.next =  new ListNode(sum %10);
            j = sum /10;
            cur = cur.next;
            l1 = l1.next;
            l2 = l2.next;
        }
        while(l1!=null){
            sum = l1.val +j;
            cur.next = new ListNode(sum %10);
            j = sum /10;
            cur = cur.next;
            l1 = l1.next;
        }
        while(l2!=null){
            sum = l2.val + j;
            cur.next = new ListNode(sum %10);
            j = sum /10;
            cur = cur.next;
            l2 = l2.next;
        }
        if(j!=0){
             cur.next = new ListNode(j);
            cur = cur.next;
        }
        return answer.next;
    }
}
原文地址:https://www.cnblogs.com/lazy-brain/p/15312782.html