Skip to content

Commit 8bfb9b0

Browse files
authored
Update Add Two Numbers II.java
1 parent 1e8651b commit 8bfb9b0

File tree

1 file changed

+37
-56
lines changed

1 file changed

+37
-56
lines changed

Medium/Add Two Numbers II.java

+37-56
Original file line numberDiff line numberDiff line change
@@ -3,65 +3,46 @@
33
* public class ListNode {
44
* int val;
55
* ListNode next;
6-
* ListNode(int x) { val = x; }
6+
* ListNode() {}
7+
* ListNode(int val) { this.val = val; }
8+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
79
* }
810
*/
911
class Solution {
10-
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
11-
ListNode l1Rev = reverse(l1);
12-
ListNode l2Rev = reverse(l2);
13-
14-
ListNode ans = new ListNode(-1);
15-
ListNode curr = ans;
16-
int carry = 0;
17-
18-
while (l1Rev != null || l2Rev != null) {
19-
int temp = 0;
20-
if (l1Rev != null && l2Rev != null) {
21-
temp = l1Rev.val + l2Rev.val + carry;
22-
l1Rev = l1Rev.next;
23-
l2Rev = l2Rev.next;
24-
}
25-
else if(l1Rev != null) {
26-
temp = l1Rev.val + carry;
27-
l1Rev = l1Rev.next;
28-
}
29-
else {
30-
temp = l2Rev.val + carry;
31-
l2Rev = l2Rev.next;
32-
}
33-
34-
if (temp > 9) {
35-
carry = temp/10;
36-
temp = temp%10;
37-
}
38-
else {
39-
carry = 0;
40-
}
41-
curr.next = new ListNode(temp);
42-
curr = curr.next;
43-
}
44-
45-
if (carry != 0) {
46-
curr.next = new ListNode(carry);
47-
curr = curr.next;
48-
}
49-
50-
return reverse(ans.next);
12+
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
13+
ListNode revL1 = reverse(l1);
14+
ListNode revL2 = reverse(l2);
15+
ListNode dummy = new ListNode(0);
16+
ListNode curr = dummy;
17+
int carry = 0;
18+
while (revL1 != null || revL2 != null || carry != 0) {
19+
if (revL1 != null && revL2 != null) {
20+
carry += revL1.val + revL2.val;
21+
revL1 = revL1.next;
22+
revL2 = revL2.next;
23+
} else if (revL1 != null && revL2 == null) {
24+
carry += revL1.val;
25+
revL1 = revL1.next;
26+
} else if (revL1 == null && revL2 != null) {
27+
carry += revL2.val;
28+
revL2 = revL2.next;
29+
}
30+
curr.next = new ListNode(carry % 10);
31+
carry /= 10;
32+
curr = curr.next;
5133
}
52-
53-
private ListNode reverse(ListNode head) {
54-
ListNode curr = head;
55-
ListNode prev = null;
56-
ListNode next = null;
57-
58-
while (curr != null) {
59-
next = curr.next;
60-
curr.next = prev;
61-
prev = curr;
62-
curr = next;
63-
}
64-
65-
return prev;
34+
return reverse(dummy.next);
35+
}
36+
37+
private ListNode reverse(ListNode root) {
38+
ListNode curr = root;
39+
ListNode prev = null;
40+
while (curr != null) {
41+
ListNode next = curr.next;
42+
curr.next = prev;
43+
prev = curr;
44+
curr = next;
6645
}
46+
return prev;
47+
}
6748
}

0 commit comments

Comments
 (0)