Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ad344d1

Browse files
author
Krishnal Ciccolella
committed
Create 25-Reverse-Nodes-in-K-Group.js
1 parent c0b8ee5 commit ad344d1

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode} head
10+
* @param {number} k
11+
* @return {ListNode}
12+
*/
13+
var reverseKGroup = function(head, k) {
14+
let dummy = new ListNode(0, head);
15+
let groupPrev = dummy;
16+
17+
while (true) {
18+
let kth = getKth(groupPrev, k);
19+
if (!kth) {
20+
break;
21+
}
22+
23+
let groupNext = kth.next;
24+
25+
// reverse group
26+
let prev = kth.next;
27+
let curr = groupPrev.next;
28+
29+
while (curr !== groupNext) {
30+
let temp = curr.next;
31+
curr.next = prev;
32+
prev = curr;
33+
curr = temp;
34+
}
35+
36+
let temp = groupPrev.next;
37+
groupPrev.next = kth;
38+
groupPrev = temp;
39+
}
40+
41+
return dummy.next;
42+
};
43+
44+
function getKth(curr, k) {
45+
while (curr && k > 0) {
46+
curr = curr.next;
47+
k -= 1;
48+
}
49+
50+
return curr;
51+
}

0 commit comments

Comments
 (0)