forked from neetcode-gh/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create 25-Reverse-Nodes-in-K-Group.js
- Loading branch information
Krishnal Ciccolella
committed
Jul 15, 2022
1 parent
c0b8ee5
commit ad344d1
Showing
1 changed file
with
51 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/** | ||
* Definition for singly-linked list. | ||
* function ListNode(val, next) { | ||
* this.val = (val===undefined ? 0 : val) | ||
* this.next = (next===undefined ? null : next) | ||
* } | ||
*/ | ||
/** | ||
* @param {ListNode} head | ||
* @param {number} k | ||
* @return {ListNode} | ||
*/ | ||
var reverseKGroup = function(head, k) { | ||
let dummy = new ListNode(0, head); | ||
let groupPrev = dummy; | ||
|
||
while (true) { | ||
let kth = getKth(groupPrev, k); | ||
if (!kth) { | ||
break; | ||
} | ||
|
||
let groupNext = kth.next; | ||
|
||
// reverse group | ||
let prev = kth.next; | ||
let curr = groupPrev.next; | ||
|
||
while (curr !== groupNext) { | ||
let temp = curr.next; | ||
curr.next = prev; | ||
prev = curr; | ||
curr = temp; | ||
} | ||
|
||
let temp = groupPrev.next; | ||
groupPrev.next = kth; | ||
groupPrev = temp; | ||
} | ||
|
||
return dummy.next; | ||
}; | ||
|
||
function getKth(curr, k) { | ||
while (curr && k > 0) { | ||
curr = curr.next; | ||
k -= 1; | ||
} | ||
|
||
return curr; | ||
} |