两个链表存储的大数相加

 //    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
// 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
// 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
// 示例:
// 输入:(2 -> 4 -> 7) + (5 -> 6 -> 4)
// 输出:7 -> 0 -> 8
// 原因:342 + 465 = 807
// 链接:https://leetcode-cn.com/problems/add-two-numbers
static class ListNode {
int val;
ListNode next;

ListNode(int x) {
val = x;
}
}
// 参考官方解题思路
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ln1 = l1 ,ln2 = l2 ,pre = new ListNode(0);
int carry = 0;
ListNode cur = pre ;
while(ln1 != null || ln2 != null){
int x = ln1 != null ? ln1.val:0;
int y = ln2 != null ? ln2.val:0;
int z = x+y+carry;
carry = z/10;
cur.next = new ListNode(z%10);
cur = cur.next;
ln1=ln1 != null ? ln1.next : null;
ln2 = ln2 != null ? ln2.next :null;
}
if(carry>0){
cur.next = new ListNode(carry);
}
return pre.next;
}
posted @ 2020-03-10 10:07  CoderRdf  阅读(524)  评论(0)    收藏  举报