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 回复 分享
发布于 2021-05-16 16:55
其他都是难懂晦涩的 包括官方那个,你的思路最清晰
2 回复 分享
发布于 2022-12-17 22:53 江苏
哥们画图用的什么软件?
点赞 回复 分享
发布于 2020-11-04 17:18
哥你字真好看
点赞 回复 分享
发布于 2021-03-23 22:04
太强了
点赞 回复 分享
发布于 2021-04-09 12:32
666,我没想到用计数来简化逻辑
点赞 回复 分享
发布于 2021-04-17 17:22
!!!我的神
点赞 回复 分享
发布于 2021-04-28 17:11
没有看懂头插法什么意思。
点赞 回复 分享
发布于 2021-05-16 16:53
没看懂
点赞 回复 分享
发布于 2021-05-21 00:18
太强了
点赞 回复 分享
发布于 2021-10-09 04:07
思路很清晰,感谢分享!!!
点赞 回复 分享
发布于 2021-11-05 12:29
思路很清晰,感谢分享
点赞 回复 分享
发布于 2021-11-13 23:27
牛逼,爱了
点赞 回复 分享
发布于 2022-03-20 16:35
画图是真的好理解
点赞 回复 分享
发布于 2022-03-31 20:19
好思路,谢谢分享
点赞 回复 分享
发布于 2022-06-06 15:57

相关推荐

点赞 评论 收藏
分享
167 22 评论
分享
牛客网
牛客企业服务