思路
代码
class Solution {
private ListNode reverse(ListNode head,ListNode tail){
ListNode newhead = null;
while(head!=tail){
ListNode save = head.next;
head.next = newhead;
newhead = head;
head = save;
}
return newhead;
}
public ListNode reverseKGroup(ListNode head, int k) {
//寻找【head,tail】区间,如果tail为空则是递归出口
ListNode tail = head;
int tmp = k;
while(tmp--!=0){
if(tail==null) return head;
tail = tail.next;
}
//翻转【head,tail】区间
ListNode res = reverse(head,tail);
//递归调用
head.next = reverseKGroup(tail, k);
return res;
}
}