博客
关于我
【牛客网-名企高频面试题】NC50 链表中的节点每k个一组翻转
阅读量:361 次
发布时间:2019-03-04

本文共 1314 字,大约阅读时间需要 4 分钟。

解题思路

本题要求将给定一个头节点的链表,其中每k个节点为一个组,逆序交换这些组的顺序。例如,当k=2时,链表1→2→3→4→5→6→7→8→9→10,反转后的链表应为7→8→1→2→9→10→3→4→5→6。

实现思路如下:

  • 首先检查特殊情况:如果链表为空或只有一个节点,直接返回原链表;如果k小于2,同样返回原链表。

  • 创建一个辅助节点dummy,用于简化链表操作,其下一个节点指向原链表的头节点。

  • 计算链表的总长度len

  • 遍历len/k次,每次处理一个k长度的组,将该组的节点逆序插入到结果链表中。

  • 在每次处理k长度的组时,从当前节点开始,提取k个节点,逆序连接到辅助链表的末尾。

  • 更新辅助链表的头节点和当前节点。

  • 最终,返回dummy节点的下一个节点,即为反转后的链表。

    代码实现

    public class Solution {    public static ListNode reverseKGroup(ListNode head, int k) {        if (head == null || head.next == null || k < 2) {            return head;        }        ListNode dummy = new ListNode(0);        dummy.next = head;        ListNode pre = dummy, cur = head, temp;        int len = 0;        // 计算链表长度        while (head != null) {            len++;            head = head.next;        }        // 处理每k个节点的组        for (int i = 0; i < len / k; i++) {            for (int j = 1; j < k; j++) {                temp = cur.next;                cur.next = temp.next;                temp.next = pre.next;                pre.next = temp;            }            pre = cur;            cur = cur.next;        }        return dummy.next;    }}

    代码解释:

  • 首先检查特殊情况,确保在处理前不会出错。

  • 使用dummy节点简化链表操作,避免了多次创建临时节点。

  • 计算链表长度len,用于确定需要处理多少组。

  • 遍历len/k次,每次处理一个k长度的组。

  • 在处理每个k长度的组时,逐个节点逆序连接到结果链表中。

  • 更新辅助节点precur,逐步构建反转后的链表。

  • 这种方法通过逐步处理每k个节点的组,实现了对整体链表的逆序交换,时间复杂度为O(n),空间复杂度为O(1)。

    转载地址:http://gser.baihongyu.com/

    你可能感兴趣的文章
    OSPF技术连载20:OSPF 十大LSA类型,太详细了!
    查看>>
    OSPF技术连载21:OSPF虚链路,现代网络逻辑连接的利器!
    查看>>
    OSPF技术连载22:OSPF 路径选择 O > O IA > N1 > E1 > N2 > E2
    查看>>
    OSPF技术连载2:OSPF工作原理、建立邻接关系、路由计算
    查看>>
    OSPF技术连载5:OSPF 基本配置,含思科、华为、Junifer三厂商配置
    查看>>
    OSPF技术连载6:OSPF 多区域,近7000字,非常详细!
    查看>>
    OSPF技术连载7:什么是OSPF带宽?OSPF带宽参考值多少?
    查看>>
    OSPF技术连载8:OSPF认证:明文认证、MD5认证和SHA-HMAC验证
    查看>>
    OSPF故障排除技巧
    查看>>
    spring配置文件中<context:property-placeholder />的使用
    查看>>
    OSPF有哪些优势?解决了RIP的什么问题?
    查看>>
    OSPF的七种类型LSA
    查看>>
    OSPF的安全性考虑:全面解析与最佳实践
    查看>>
    ospf综合实验2 2012/9/8
    查看>>
    OSPRay 开源项目教程
    查看>>
    OSS 访问图片资源报“No ‘Access-Control-Allow-Origin‘”的错误
    查看>>
    oss报UnknownHost,k8s设置hostAliases参数
    查看>>
    OS模块
    查看>>
    OS第2章 —— 进程
    查看>>
    OS第3章 —— 进程调度和死锁
    查看>>