Skip to content

Commit 442cbf0

Browse files
committed
两数相加-优雅代码
1 parent 7c91763 commit 442cbf0

1 file changed

Lines changed: 20 additions & 32 deletions

File tree

src/main/java/io/github/zebinh/algorithmJava/leetcode/AddTwoNumbers.java

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,39 +20,27 @@ class ListNode {
2020
public class AddTwoNumbers {
2121

2222
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;
23+
ListNode head = new ListNode(0);
24+
ListNode curNode = head, i = l1, j = l2;
25+
int carry = 0;
26+
while (i != null || j != null) {
27+
int v1 = i == null ? 0 : i.val;
28+
int v2 = j == null ? 0 : j.val;
29+
int sum = carry + v1 + v2;
30+
ListNode newNode = new ListNode(sum % 10);
31+
curNode.next = newNode;
32+
curNode = newNode;
33+
carry = sum / 10;
34+
if (i != null){
35+
i = i.next;
36+
}
37+
if (j != null){
38+
j = j.next;
39+
}
3740
}
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;
41+
if (carry > 0) {
42+
curNode.next = new ListNode(carry);
4443
}
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;
44+
return head.next;
5745
}
5846
}

0 commit comments

Comments
 (0)