import java.util.*;
public class Solution {
public ListNode reverseKGroup (ListNode head, int k) {
//采用递归方法先反转一个,
//反转后的尾部可以指向下一个反转的开始节点
ListNode tail = head;//第一次反转的尾部
for(int i=0;i<k;i++){
if(tail==null){//不足反转
return head;
}
tail = tail.next;
}
ListNode pre = null;//作为新的前驱节点,
//不能直接使用head进行反转,因为head还要用来连接下一k组
//进行反转
ListNode cur = head;
ListNode tmp = cur;
while(cur!=tail){
tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
head.next = reverseKGroup(tail,k);
return pre;
}
}



京公网安备 11010502036488号