public class Solution {
public ListNode reverse(ListNode head, ListNode end){
if(head==null || head.next==null || head==end || head.next==end) return head;
ListNode sec = head.next;
ListNode rem = reverse(sec,end);//递归,直到返回head
sec.next =head; head.next=null;//实现反转
return rem;
}
public ListNode reverseKGroup(ListNode head, int k) {//分组反转
ListNode curr = head; int count = 0;
while (curr != null && count != k) {
curr = curr.next;count++;
}
if (count == k) {
ListNode temp = reverseKGroup(curr, k);
ListNode t = reverse(head,curr);
head.next = temp;
return t;
}
return head;
}
}
public ListNode reverse(ListNode head, ListNode end){
if(head==null || head.next==null || head==end || head.next==end) return head;
ListNode sec = head.next;
ListNode rem = reverse(sec,end);//递归,直到返回head
sec.next =head; head.next=null;//实现反转
return rem;
}
public ListNode reverseKGroup(ListNode head, int k) {//分组反转
ListNode curr = head; int count = 0;
while (curr != null && count != k) {
curr = curr.next;count++;
}
if (count == k) {
ListNode temp = reverseKGroup(curr, k);
ListNode t = reverse(head,curr);
head.next = temp;
return t;
}
return head;
}
}