Java 链表中节点每K个一组翻转(头插法思想)

链表中的节点每k个一组翻转

http://www.nowcoder.com/questionTerminal/b49c3dc907814e9bbfa8437c251b028e

图片说明

import java.util.*;
public class Solution {
    public ListNode reverseKGroup (ListNode head, int k) {
        if(head==null||head.next==null||k==1) return head;
        ListNode res = new ListNode(0);
        res.next = head;
        int length = 0;
        ListNode pre = res,
                 cur = head,
                 temp = null;
        while(head!=null){
            length++;
            head = head.next;
        }
        //分段使用头插法将链表反序
        for(int i=0; i<length/k; i++){
            //pre作为每一小段链表的头节点,负责衔接
            for(int j=1; j<k; j++){
                temp = cur.next;
                cur.next = temp.next;
                //相当于头插法,注意:
                //temp.next = cur是错误的,temp需要连接的不是前一节点,而是子序列的头节点
                temp.next = pre.next;
                pre.next = temp;
            }
            //每个子序列反序完成后,pre,cur需要更新至下一子序列的头部
            pre = cur;
            cur = cur.next;
        }
        return res.next;
    }
}
全部评论
其他都是难懂晦涩的 包括官方那个,你的思路最清晰
2 回复 分享
发布于 2022-12-17 22:53 江苏
先统计一遍链表的长度比较高明,在后面的解题过程中可以让思路更清晰。
2 回复 分享
发布于 2021-05-16 16:55
好思路,谢谢分享
点赞 回复 分享
发布于 2022-06-06 15:57
画图是真的好理解
点赞 回复 分享
发布于 2022-03-31 20:19
牛逼,爱了
点赞 回复 分享
发布于 2022-03-20 16:35
思路很清晰,感谢分享
点赞 回复 分享
发布于 2021-11-13 23:27
思路很清晰,感谢分享!!!
点赞 回复 分享
发布于 2021-11-05 12:29
太强了
点赞 回复 分享
发布于 2021-10-09 04:07
没看懂
点赞 回复 分享
发布于 2021-05-21 00:18
没有看懂头插法什么意思。
点赞 回复 分享
发布于 2021-05-16 16:53
!!!我的神
点赞 回复 分享
发布于 2021-04-28 17:11
666,我没想到用计数来简化逻辑
点赞 回复 分享
发布于 2021-04-17 17:22
太强了
点赞 回复 分享
发布于 2021-04-09 12:32
哥你字真好看
点赞 回复 分享
发布于 2021-03-23 22:04
哥们画图用的什么软件?
点赞 回复 分享
发布于 2020-11-04 17:18

相关推荐

不愿透露姓名的神秘牛友
07-08 10:39
一个证都没&nbsp;我能填什么
程序员小白条:别人有,你为什么没有,还是这个道理,社会就是比较,竞争,淘汰,你要安逸,那么就要做好淘汰的准备
点赞 评论 收藏
分享
码农索隆:想看offer细节
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
07-10 11:08
门头沟学院 Java
投递京东等公司9个岗位
点赞 评论 收藏
分享
评论
167
22
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务