/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) {this.val = val;}
* ListNode(int val, ListNode next) {this.val = val; this.next = next;}
* }
*/
class Solution {public ListNode reverseKGroup(ListNode head, int k) {if(k <= 1) return head;
ListNode dummy = new ListNode(0, head);
ListNode tail = dummy;
while(tail.next != null) {
int count = k;
ListNode temp = tail;
tail = tail.next;
ListNode temp2 = tail;
while(temp2 != null && count > 0) {
temp2 = temp2.next;
count--;
}
if(count > 0) return dummy.next;
count = k-1;
while(count > 0) {
ListNode cur = tail.next;
tail.next = cur.next;
cur.next = temp.next;
temp.next = cur;
count--;
}
}
return dummy.next;
}
}