Skip to content

Commit 0a4d2c6

Browse files
authored
Update Reverse Nodes in k-Group.java
1 parent 02ac838 commit 0a4d2c6

File tree

1 file changed

+24
-31
lines changed

1 file changed

+24
-31
lines changed

Hard/Reverse Nodes in k-Group.java

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,47 +10,40 @@
1010
*/
1111
class Solution {
1212
public ListNode reverseKGroup(ListNode head, int k) {
13-
if (head == null) {
14-
return null;
15-
}
16-
ListNode start = head;
17-
ListNode curr = head;
13+
ListNode newHead = null;
1814
ListNode prev = null;
19-
ListNode revHead = null;
15+
ListNode curr = head;
2016
while (curr != null) {
21-
int count = 1;
22-
while (curr.next != null && count < k) {
17+
ListNode start = curr;
18+
int idx = 1;
19+
for (idx = 1; idx < k && curr.next != null; idx++) {
2320
curr = curr.next;
24-
count++;
2521
}
26-
if (count == k) {
27-
ListNode next = curr.next;
28-
curr.next = null;
29-
if (revHead == null) {
30-
revHead = curr;
31-
}
32-
ListNode reverse = reverse(start);
33-
if (prev != null) {
34-
prev.next = reverse;
35-
}
36-
start.next = next;
37-
prev = start;
38-
start = next;
39-
curr = next;
22+
if (idx != k) {
23+
curr = null;
24+
continue;
4025
}
41-
else {
42-
curr = curr.next;
26+
ListNode next = curr.next;
27+
curr.next = null;
28+
ListNode reversedNode = reverse(start);
29+
if (newHead == null) {
30+
newHead = reversedNode;
4331
}
32+
if (prev != null) {
33+
prev.next = reversedNode;
34+
}
35+
prev = start;
36+
start.next = next;
37+
curr = next;
4438
}
45-
return revHead == null ? head : revHead;
46-
}
39+
return newHead;
40+
}
4741

48-
private ListNode reverse(ListNode root) {
49-
ListNode curr = root;
50-
ListNode next = null;
42+
private ListNode reverse(ListNode node) {
43+
ListNode curr = node;
5144
ListNode prev = null;
5245
while (curr != null) {
53-
next = curr.next;
46+
ListNode next = curr.next;
5447
curr.next = prev;
5548
prev = curr;
5649
curr = next;

0 commit comments

Comments
 (0)