头插法:
思路:将要反转的链表分组,每一组进行组内反转
代码:
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode p=head;
ListNode cal=new ListNode(-1);
ListNode p1=cal;
cal.next=head;
int len=0;
while(p!=null){
len++;
p=p.next;
}
int cnt=len/k;
ListNode p2=head;
ListNode cc=new ListNode (-1);
for(int i=0;i<cnt;i++){
for(int j=1;j<k;j++){
cc=p2.next;
p2.next=cc.next;
cc.next=p1.next;
p1.next=cc;
}
p1=p2;
p2=p2.next;
}
return cal.next;
}
}