- Reverse Nodes in k-Group
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
if(k==1){
return head;
}
LinkedList<ListNode> se = new LinkedList<ListNode>();
int rk = k-1;
reverseSubList(head,rk,se);
ListNode newHead = se.get(0);
for(int i=0;i+2<se.size();i+=2){
se.get(i+1).next=se.get(i+2);
}
return newHead;
}
public ListNode reverseSubList(ListNode head, int k,LinkedList<ListNode> se) {
int l=0;
ListNode cHead=head;
while(l<=k){
if(cHead==null){
se.add(head);
return null;
}
cHead=cHead.next;
l++;
}
ListNode tmp=head;
ListNode tail = head;
int c=0;
while(tail.next!=null && c<k ){
tmp=head;
head=tail.next;
tail.next=tail.next.next;
head.next=tmp;
c++;
}
se.add(head);
se.add(tail);
reverseSubList(tail.next, k,se);
return head;
}
}