/** * 简单繁琐暴力解法 * * @param head * @param k * @return */ public static ListNode reverseKGroup(ListNode head, int k) { if (head == null) { return null; } int len = 0; ListNode tail = head; while (tail != null) { len++; tail = tail.next; } if (len < k) { return head; } ListNode next; ListNode pre = null; int i = 0; while (head != null) { next = head.next; head.next = pre; pre = head; head = next; i++; if (i % k == 0) { break; } } tail = pre; while (tail.next != null) { tail = tail.next; } len = len - i; while (true) { i = 0; if (len < k) { tail.next = head; break; } ListNode pre1 = null; while (head != null) { next = head.next; head.next = pre1; pre1 = head; head = next; i++; len--; if (i % k == 0) { break; } } tail.next = pre1; tail = pre1; while (tail.next != null) { tail = tail.next; } } return pre; }