和使用三个指针翻转链表的思路差不多。
提交代码
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode p=head;
for(int i=0;i<k;i++) {
if(p==null) return head;
p=p.next;
}
ListNode dummy=new ListNode(-1);
dummy.next=head;
ListNode tail=head,tmpHead;
for(int i=1;i<k;i++) {
tmpHead=dummy.next;
dummy.next=tail.next;
tail.next=tail.next.next;
dummy.next.next=tmpHead;
}
tail.next=reverseKGroup(tail.next,k);
return dummy.next;
}
}