25. Reverse Nodes in k-Group
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
Example:
Given this linked list: 1->2->3->4->5
For k = 2, you should return: 2->1->4->3->5
For k = 3, you should return: 3->2->1->4->5
Note:
- Only constant extra memory is allowed.
- You may not alter the values in the list‘s nodes, only nodes itself may be changed.
题意:对给定链表每k个节点进行反转一次
代码如下:
/** * 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) { ???if(!head || k===1) return head; ???var dummy=new ListNode(-1); ???var pre=dummy,cur=head; ???dummy.next=head; ???var i=0; ???while(cur){ ???????i++; ???????if(i%k===0){ ???????????pre=reverseOneGroup(pre,cur.next); ???????????cur=pre.next; ???????}else{ ???????????cur=cur.next; ???????} ???} ???return dummy.next;};var reverseOneGroup=function(pre,next){ ???var last=pre.next; ???var cur=last.next; ???while(cur!==next){ ???????last.next=cur.next; ???????cur.next=pre.next; ???????pre.next=cur; ???????cur=last.next; ???} ???return last;}
25. Reverse Nodes in k-Group(js)
原文地址:https://www.cnblogs.com/xingguozhiming/p/10387404.html