import java.util.*;
/*
public class Solution {
/**
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
public ListNode reverseKGroup (ListNode head, int k) {
// write code here
ListNode cur = head;
int count = 0;
while (cur != null && count != k) {
cur = cur.next;
count++;
}
if (count == k) {
cur = reverseKGroup(cur, k);
while (count != 0) {
count–;
ListNode tmp = head.next;
head.next = cur;
cur = head;
head = tmp;
}
head = cur;
}
return head;
}
}





关键点1:
分组划分,递归向下传递。
2:
递归终止条件,每组个数小于k,直接返回头部,向上递归
3:递归完成一次,即进行当前分组节点位置调换。通过与count坐比较。一次改变一个节点指向。用cur代表当前改变节点。如果count=0.head=cur;return head 向上递归。
cur指向子递归首元素。当前递归内内部组内节点指向改变。完成return head.向上递归 直至递归全部完成 排序结束