jd0205.链表求和

题目描述

给定两个用链表表示的整数,每个节点包含一个数位。

这些数位是反向存放的,也就是个位排在链表首部。

编写函数对这两个整数求和,并用链表形式返回结果。

示例:

1
2
输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
输出:2 -> 1 -> 9,即912

题解

就是简单的按位相加的题目, 记录下同一位上两个数字的和, 判断是否进位.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0);
ListNode cur = head;
int carry = 0;
while (l1 != null || l2 != null) {
int sum = carry;

if (l1 != null) {
sum += l1.val;
l1 = l1.next;
}
if (l2 != null){
sum += l2.val;
l2 = l2.next;
}


carry = sum/10;
sum = sum%10;

cur.next = new ListNode(sum);
cur = cur.next;

}

if (carry==1)
cur.next = new ListNode(1);

return head.next;
}
-------------本文结束感谢您的阅读-------------
可以请我喝杯奶茶吗