1. public ListNode reverseKGroup(ListNode head, int k) {
    2. // 1 边界条件
    3. ListNode node = head;
    4. int count = 0;
    5. while (count < k) {
    6. if (node == null) {
    7. return head;
    8. }
    9. count++;
    10. node = node.next;
    11. }
    12. // 2 下潜
    13. ListNode pre = reverseKGroup(node, k);
    14. // 3 解决子问题
    15. while (0 < count--) {
    16. ListNode next = head.next;
    17. head.next = pre;
    18. pre = head;
    19. head = next;
    20. }
    21. return pre;
    22. }