Skip to content

Commit 9366292

Browse files
committed
1 parent d49d96e commit 9366292

File tree

2 files changed

+21
-67
lines changed

2 files changed

+21
-67
lines changed

src/main/java/name/guolanren/_1to100/_1to10/p2/AddTwoNumbers.java

Lines changed: 21 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -7,67 +7,32 @@
77
public class AddTwoNumbers {
88

99
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
10-
ListNode sumListNode = l1;
11-
ListNode currentNode = sumListNode;
12-
ListNode prevNode = null;
13-
int carry = 0;
14-
while (true) {
15-
// l1 遍历完了,将 l2 加上进位后,接到 sumListNode 尾
16-
if (l1 == null) {
17-
prevNode.next = withCarry(l2, carry);
18-
break;
10+
ListNode l3 = new ListNode();
11+
ListNode tail = l3;
12+
int nodeVal = 0;
13+
while (l1 != null || l2 != null || nodeVal != 0) {
14+
if (l1 != null) {
15+
nodeVal += l1.val;
16+
l1 = l1.next;
1917
}
20-
// l2 遍历完了,将 l1 加上进位后,接到 sumListNode 尾
21-
if (l2 == null) {
22-
prevNode.next = withCarry(l1, carry);
23-
break;
24-
}
25-
26-
// 计算当前节点值
27-
currentNode.val = l1.val + l2.val + carry;
2818

29-
// 是否需要进位
30-
if (currentNode.val > 9) {
31-
currentNode.val -= 10;
32-
carry = 1;
33-
} else {
34-
carry = 0;
19+
if (l2 != null) {
20+
nodeVal += l2.val;
21+
l2 = l2.next;
3522
}
3623

37-
l1 = l1.next;
38-
l2 = l2.next;
39-
prevNode = currentNode;
40-
currentNode = currentNode.next;
24+
tail.next = new ListNode(nodeVal % 10);
25+
tail = tail.next;
26+
nodeVal = nodeVal / 10;
4127
}
42-
return sumListNode;
28+
return l3.next;
4329
}
30+
}
4431

45-
/**
46-
* ListNode 加上进位
47-
*/
48-
private ListNode withCarry(ListNode l, int carry) {
49-
ListNode head = l;
50-
if (l != null) {
51-
while (true) {
52-
l.val += carry;
53-
54-
if (l.val < 10) {
55-
break;
56-
}
57-
58-
l.val -= 10;
59-
carry = 1;
60-
61-
if (l.next == null) {
62-
l.next = new ListNode(carry);
63-
break;
64-
}
65-
66-
l = l.next;
67-
}
68-
} else if (carry > 0) {
69-
return new ListNode(carry);
70-
}
71-
return head;
72-
}
32+
class ListNode {
33+
int val;
34+
ListNode next;
35+
ListNode() {}
36+
ListNode(int val) { this.val = val; }
37+
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
7338
}

src/main/java/name/guolanren/_1to100/_1to10/p2/ListNode.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)