import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ public ListNode reverseKGroup (ListNode head, int k) { // write code here // 先进行分组的倒转 ListNode ret = new ListNode(-1); ListNode pre = ret; ListNode preNode = pre; int i = 0; while(head != null){ ListNode temp = head; head = head.next; temp.next = pre.next; pre.next = temp; i++; if(i == k){ while(pre.next != null){ pre = pre.next; preNode = pre; } i = 0; } } // 若最后一次不足K,再将最后一组再进行一次反转 if(i != 0){ ListNode ret2 = new ListNode(-1); ListNode pre2 = ret2; head = preNode.next; while(head != null){ ListNode temp = head; head = head.next; temp.next = pre2.next; pre2.next = temp; } preNode.next = ret2.next; } return ret.next; } }