直接利用上一道的n-m反转每次计算1-k如果小于k直接返回head,否则就是利用上面方法反转1-k的节点,随后此时返回当前的头节点pre,之前的head变成了终结点,也就是head.next再次新一轮递归----会做到这里就差不多了 if(head==null) return head; int cnt = 0; ListNode curr = head; ListNode pre = head; while(curr!=null){ cnt++; curr = curr.next; if(cnt>=k) break; } if(cnt<k) return head; pre = reverse(head,1,k); head.next = reverseKGroup(head.next,k); return pre;