排序链表

2023-10-27

1)链表快排

p->q之间放着小于pivot的节点,q->next~tail之间放着大于pivot的节点。

class Solution {
public:
    ListNode* sortList(ListNode* head) {
        quickSort(head,NULL);
        return head;
    }
    void quickSort(ListNode* head,ListNode* tail){
        if(head==tail) return;
        ListNode *p=head,*q=head->next;
        int pivot=head->val;
        while(q!=tail){
            if(q->val<=pivot){
                p=p->next;
                swap(p->val,q->val);
            }
            q=q->next;
        }
        swap(p->val,head->val);
        quickSort(head,p);
        quickSort(p->next,q);
    }
};

2)链表归并排序

class Solution {
public:
    ListNode* sortList(ListNode* head) {
        return mergeList(head);
    }
    ListNode* mergeList(ListNode* head){
        if(!head || !head->next) return head;
        ListNode *slow=head,*fast=head,*pre=head;
        while(fast && fast->next){
            pre=slow;
            slow=slow->next;
            fast=fast->next->next;
        }
        pre->next=NULL;
        ListNode* l=mergeList(head);
        ListNode* r=mergeList(slow);
        return merge(l,r);
    }
    ListNode* merge(ListNode* l,ListNode* r){
        if(!l) return r;
        if(!r) return l;
        if(l->val<=r->val){
            l->next=merge(l->next,r);
            return l;
        }else{
            r->next=merge(l,r->next);
            return r;
        }
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

排序链表 的相关文章

  • 无法使用c#更改视频捕获分辨率

    我正在尝试使用 C 中的 DirectShowNet 更改默认网络摄像头分辨率 据我所知 我需要通过调用 windows win32 api dll 中内置的 VideoInfoHeader 类来更改它以进行 avi 捕获 我有来自 Dir
  • 更新 Azure Blob 上的 LastModified

    我正在移植代码以使用 C 中的 Azure 存储 SDK 传统上 我称其为更新修改文件的上次写入 修改时间 File SetLastWriteTimeUtc fileName lastWriteTimeUtc 要更新 blob 的上次修改时
  • Boost MPI 在监听列表时不会释放资源?

    这是一个后续问题如何释放 boost mpi request https stackoverflow com questions 44078901 how do i free a boostmpirequest 我在监听列表而不是单个项目时
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • 如何通过 libwebsocket 发送异步数据?

    我正在将 Warmcat 的 libwebsocket C 库用于小型 Websocket 服务器 我已经启动并运行了这些示例 并且可以发送数据以响应从 websocket 接收数据 例如回显发送的反向字节 但是 我无法弄清楚如何在不使用
  • C# 中 PKCS11Interop 库的线程安全使用 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 PKCS11Interop 在 HSM 内执行密钥管理操作 我使用的 HSM 是 Thales PCI Express 下面是
  • 我可以将 char 或 DateTime 设置为 null 吗?

    我可以将 null 设置为char数据类型 并且DateTime在 C 中 多谢你们 这是不可能的 它是一个值类型 使用 char myChar null DateTime myDate null 这相当于 Nullable
  • 如何从不同的线程访问控件?

    如何从创建控件的线程以外的线程访问控件 避免跨线程错误 这是我的示例代码 private void Form1 Load object sender EventArgs e Thread t new Thread foo t Start p
  • 为什么像 BindingList 或 ObservableCollection 这样的类不是线程安全的?

    我一次又一次发现自己必须编写 BindingList 和 ObservableCollection 的线程安全版本 因为当绑定到 UI 时 这些控件无法从多个线程更改 我想理解的是why情况就是这样 这是设计错误还是故意的 问题是设计一个线
  • 如何使用 CUDA/Thrust 对两个数组/向量根据其中一个数组中的值进行排序

    这是一个关于编程的概念问题 总而言之 我有两个数组 向量 我需要对一个数组 向量进行排序 并将更改传播到另一个数组 向量中 这样 如果我对 arrayOne 进行排序 则对于排序中的每个交换 arrayTwo 也会发生同样的情况 现在 我知
  • 如何调试.NET Windows Service OnStart方法?

    我用 NET 编写的代码仅在作为 Windows 服务安装时才会失败 该故障甚至不允许服务启动 我不知道如何进入 OnStart 方法 如何 调试 Windows 服务应用程序 http msdn microsoft com en us l
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • 在 LP2844Z(Zebra 打印机)上的收据中包含 PNG [重复]

    这个问题在这里已经有答案了 我正在致力于创建一个基于 HTML5 画布的签名 绘图框 目前我们在服务器上将画布保存为PNG 但可以轻松地将base64字符串保存在数据库中 现在的问题是我们如何在打印的收据上添加签名 目前我们使用 GF 字段
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用
  • 如何根据当前日期时间发现财政年度?

    我需要基于当前或今天的日期时间的财政年度 假设我们认为今天的日期是10 April 2011 那么我需要输出为Financial Year 2012在某些情况下 我需要以短格式显示相同的输出FY12 我想以两种方式显示 在我们的要求中 考虑

随机推荐

  • fake-useragent,python爬虫伪装请求头

    在编写爬虫进行网页数据的时候 大多数情况下 需要在请求是增加请求头 下面介绍一个python下非常好用的伪装请求头的库 fake useragent 具体使用说明如下 安装fake useragent库 pip install fake u
  • 复杂美区块链溯源系统架构

    从功能架构上 复杂美将区块链存证溯源系统按照功能划分为区块链核心层 接口层 运维管理层 溯源平台层和用户端层 1 区块链基础层 面向整个存证溯源平台提供基础信息服务 主要是为上层架构组件提供基础设施 保证上层服务可靠运行 源数据从IOT设备
  • 数据结构-链式存储

    数据结构 一 数据结构的定义 一组用来保存一种或者多种特定关系的数据集合 二 数据与数据之间的关系 lt 1 gt 数据的逻辑结构 数据元素与元素之间的关系 集合 关系平等 线性结构 元素之间一对一的关系 表 队列 栈 树形结构 元素之间一
  • 模式分类识别

    模式分类识别 DBN深度置信网络数据多特征分类预测 Matlab完整程序 目录 模式分类识别 DBN深度置信网络数据多特征分类预测 Matlab完整程序 分类结果 基本介绍 程序设计 参考资料 分类结果
  • Host文件

    linux中 etc目录 配置文件 etc目录包含了系统特有的配置文件 所谓配置文件 就是用于控制程序运行的本地文件 它绝大多情况下都说 只读 的私有文件 而且是可编辑的 这里的可编辑是指能直接看懂的 所以那些二进制可执行文件是不能作为配置
  • springboot多数据源---2事务

    一 多数据源事务控制 在多数据源下 由于涉及到数据库的多个读写 一旦发生异常就可能会导致数据不一致的情况 在这种情况希望使用事务 进行回退 但是Spring的声明式事务在一次请求线程中只能使用一个数据源进行控制 但是对于多源数据库 1 单一
  • 在webstorm 中直接运行ts文件

    原文链接 在webstorm 中直接运行ts文件 上一篇 ubuntu 使用 Apache Bench 进行并发测试 下一篇 使用js解数独难题 安装插件后重启IDE Run Configuration for TypeScript
  • Notice: Use of undefined constant submit - assumed 'submit'

    Notice Use of undefined constant submit assumed submit in D wamp www ECMS insert monitors php on line 66 Notice Undefine
  • vue期望值与实际值比较:折线图

    效果图 点击上方对应按钮 下方相应的数据图可隐藏 显示 代码 一 下载echarts包 终端运行 npm install echarts 二 components HelloWorld vue
  • Python3,一行代码解析地址信息,原来物流单的地址是这样拆分。

    1行代码解析地址信息 1 引言 2 代码示例 2 1 简介 2 2 安装 2 3 实战 2 3 1 提取省市区信息 2 3 2 提取街镇乡 村或居委会信息 2 3 3 自动补全省市信息 3 总结 1 引言 小屌丝 鱼哥 你说咱们发快递时填写
  • 页式存储,段式存储,段页式存储,引入快表等访存次数

    王道的说法 页式存储 2次 第一次 访问内存中的页表 利用逻辑地址中的页号查找到页帧号 与逻辑地址中的页内偏移拼接形成物理地址 第二次 得到物理地址后 再一次访问内存 存取指令或者数据 段式存储 2次 同上 段页式存储 3次 第一次 访问内
  • 【译】Rust 实现一个 DNS 客户端,我从中学到什么

    What I learned from making a DNS client in Rust 译文 Rust 实现一个 DNS 客户端 我从中学到什么 原文链接 https blog adamchalmers com making a d
  • 大津算法的matlab实现

    大津算法详解 一 算法功能 图像分割就是把图像分成若干个特定的 具有独特性质的区域并提出感兴趣目标的技术和过程 它是由图像处理到图像分析的关键步骤 大津算法也称最大类间差法 由大津于1979年提出 被认为是图像分割中阈值选取的最佳算法 计算
  • 用开卡工具重生SSD,SM2246XT一步一步开卡成功教程

    故障现象 不能进系统 用U盘从PE进入 过程很慢 卡住 进不了PE 直接拆下硬盘 用硬盘盒连接电脑 能识别 发现C盘还已经标红 D盘正常 还不错 文件都在 直接拷贝出来 接下来就是对他直接格式化 这里出现了问题 无论是用PE的还是windo
  • 前端知识题整理第二期

    1 js中的闭包指什么 有权访问另一个函数作用域中的变量的函数 创建闭包的常见方式 就是一个函数内部创建另一个函数 2 v if和v show的区别是什么 v if是动态的向DOM树内添加或删除DOM元素 v show本质是标签displa
  • STM32 硬件IIC 控制OLED I2C卡死问题

    更新通知 2023 09 06 STM32L151 固件库 使用I2C 太难了 又宕机了 建议不要在固件库版本上尝试硬件IIC 了 一般人真用不了 直接使用软件模拟的 或者不要使用固件库了 用HAL 库吧 据说HAL 库没这么多问题 不死心
  • 【深度学习与计算机视觉】13、深度学习中的目标检测视频笔记

    文章目录 一 目标检测是什么 二 RCNN 三 SPPnet 四 Fast R CNN 五 Faster R CNN 六 R FCN 七 YOLO v1 八 YOLO v2 九 YOLO v3 一 目标检测是什么 最小外接矩形 也就是最后要
  • 【RocketMQ】消息拉模式分析

    RocketMQ有两种获取消息的方式 分别为推模式和拉模式 推模式 推模式在 RocketMQ 消息的拉取一文中已经讲过 虽然从名字上看起来是消息到达Broker后推送给消费者 实际上还是需要消费向Broker发送拉取请求获取消息内容 推模
  • Redis持久化之RDB与AOF详解

    RDB和AOF机制 简介 RDB和AOF是redis数据持久化的两种机制 当然实际场景下还会使用这两种的混合模式 为了防止数据丢失以及服务重启时能够恢复数据 为什么需要持久化 Redis是个基于内存的数据库 服务器一旦宕机 内存中的数据将全
  • 排序链表

    1 链表快排 p gt q之间放着小于pivot的节点 q gt next tail之间放着大于pivot的节点 class Solution public ListNode sortList ListNode head quickSort