速记-k个一组反转
直接利用上一道的n-m反转
每次计算1-k如果小于k直接返回head,否则就是利用上面方法反转1-k的节点,随后此时返回当前的头节点pre,之前的head变成了终结点,也就是head.next再次新一轮递归----会做到这里就差不多了
if(head==null) return head;
int cnt = 0;
ListNode curr = head;
ListNode pre = head;
while(curr!=null){
cnt++;
curr = curr.next;
if(cnt>=k) break;
}
if(cnt<k) return head;
pre = reverse(head,1,k);
head.next = reverseKGroup(head.next,k);
return pre;
每次计算1-k如果小于k直接返回head,否则就是利用上面方法反转1-k的节点,随后此时返回当前的头节点pre,之前的head变成了终结点,也就是head.next再次新一轮递归----会做到这里就差不多了
if(head==null) return head;
int cnt = 0;
ListNode curr = head;
ListNode pre = head;
while(curr!=null){
cnt++;
curr = curr.next;
if(cnt>=k) break;
}
if(cnt<k) return head;
pre = reverse(head,1,k);
head.next = reverseKGroup(head.next,k);
return pre;
全部评论
相关推荐
点赞 评论 收藏
分享
08-15 10:56
门头沟学院 测试开发 点赞 评论 收藏
分享