Skip to content

Instantly share code, notes, and snippets.

@wintercn
Created December 15, 2019 16:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wintercn/08e079da63225c1f3f72c9f223861a9a to your computer and use it in GitHub Desktop.
Save wintercn/08e079da63225c1f3f72c9f223861a9a to your computer and use it in GitHub Desktop.
reverseKGroupFromEnd
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @param {number} k
* @return {ListNode}
*/
var reverseKGroup = function(head, k) {
var l = (head => {
var l = 0;
while(head)
head = head.next, l++;
return l;
})(head);
var tail = {next:head};
var result = tail;
for(var j = 0; j < l % k; j ++)
tail = tail.next;
var groupHead = tail.next;
for(var j = 0; j < (l - l % k)/k ; j++) {
var last = null;
var current = groupHead;
var next = current.next;
for(var i = 0; i < k; i++) {
current.next = last;
last = current;
current = next;
if(current)
next = current.next;
}
tail.next = last;
tail = groupHead;
groupHead = current;
}
tail.next = groupHead;
return result.next;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment