k为2时
效果:
k=3时:
简单的方法,利用尾插法和递归解决问题。尾插法将链表翻转,递归来依次翻转k个链表。
k=3时示例:
设置头结点,头结点的下一个(循环时,用来将下一次循环的头结点保存下来),设置尾结点,即第k个结点;
先判断结点的数目,小于k时,返回head。
开始循环,k-1次即可!!!
大于k时:
首先将head指向tail的下一个:
然后将尾结点指向头结点:
第一次进行尾插法,要使用一个flag=true,让newHead.next=reverseKGroup(tail.next,k);执行递归,第一次插完后只需要让newHead.next=tail.next即可。
结束后tail就会到头结点的位置,返回即可
java代码如下
class Solution {
public static ListNode reverseKGroup(ListNode head, int k) {
//计算head的长度
ListNode countHead=head;
//计数器
int count=0;
while (countHead!=null){
countHead=countHead.next;
count++;
}
//如果长度小于k,直接返回
if(count



