Skip to content

Commit 7c91763

Browse files
committed
两数相加
1 parent b8cb7ca commit 7c91763

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package io.github.zebinh.algorithmJava.leetcode;
2+
3+
import java.util.List;
4+
5+
/**
6+
* leetcode 第2题
7+
* 两数之和
8+
*/
9+
10+
11+
class ListNode {
12+
int val;
13+
ListNode next;
14+
15+
ListNode(int x) {
16+
val = x;
17+
}
18+
}
19+
20+
public class AddTwoNumbers {
21+
22+
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
23+
int sum = l1.val + l2.val;
24+
ListNode head = new ListNode(sum % 10);
25+
int highBit = sum / 10;
26+
ListNode newCur = head;
27+
ListNode i = l1.next;
28+
ListNode j = l2.next;
29+
while (i != null && j != null) {
30+
sum = i.val + j.val;
31+
ListNode newNode = new ListNode((sum+highBit) % 10);
32+
newCur.next = newNode;
33+
newCur = newNode;
34+
highBit = (sum + highBit) / 10;
35+
i = i.next;
36+
j = j.next;
37+
}
38+
while (i != null) {
39+
ListNode newNode = new ListNode((i.val+highBit) % 10);
40+
newCur.next = newNode;
41+
newCur = newNode;
42+
highBit = (i.val+highBit) / 10;
43+
i = i.next;
44+
}
45+
while (j != null) {
46+
ListNode newNode = new ListNode((j.val+highBit) % 10);
47+
newCur.next = newNode;
48+
newCur = newNode;
49+
highBit = (j.val+highBit) / 10;
50+
j = j.next;
51+
}
52+
if (highBit == 1) {
53+
ListNode newNode = new ListNode(highBit);
54+
newCur.next = newNode;
55+
}
56+
return head;
57+
}
58+
}

0 commit comments

Comments
 (0)