Skip to content

Commit 1f3c0a2

Browse files
authored
Create Double a Number Represented as a Linked List.java
1 parent 3830eea commit 1f3c0a2

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* public class ListNode {
4+
* int val;
5+
* ListNode next;
6+
* ListNode() {}
7+
* ListNode(int val) { this.val = val; }
8+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9+
* }
10+
*/
11+
class Solution {
12+
public ListNode doubleIt(ListNode head) {
13+
ListNode rev = reverse(head);
14+
ListNode curr = rev;
15+
int carry = 0;
16+
while (curr != null) {
17+
int val = curr.val * 2 + carry;
18+
carry = val / 10;
19+
curr.val = val % 10;
20+
if (curr.next == null && carry != 0) {
21+
curr.next = new ListNode(carry);
22+
break;
23+
}
24+
curr = curr.next;
25+
}
26+
return reverse(rev);
27+
}
28+
29+
private ListNode reverse(ListNode curr) {
30+
ListNode next = null;
31+
ListNode prev = null;
32+
while (curr != null) {
33+
next = curr.next;
34+
curr.next = prev;
35+
prev = curr;
36+
curr = next;
37+
}
38+
return prev;
39+
}
40+
}

0 commit comments

Comments
 (0)