LeetCode 148. 排序链表(归并排序、快速排序)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 归并排序
      • 2.2 快速排序

1. 题目

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

示例 1:输入: 4->2->1->3
输出: 1->2->3->4
示例 2:输入: -1->5->3->4->0
输出: -1->0->3->4->5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 归并排序

参考单链表归并排序

class Solution {
public:ListNode* sortList(ListNode* head) {if(head == NULL || head->next == NULL)return head;ListNode *fast = head->next, *slow = head, *rightHead;//fast初始化先走一步,偶数个链表时,防止一边0个,一边2个节点while(fast && fast->next){fast = fast->next->next;slow = slow->next;}rightHead = slow->next;slow->next = NULL;//先断开,再操作左右!!!ListNode *right = sortList(rightHead);ListNode *left = sortList(head);return merge(left, right);}ListNode* merge(ListNode *left, ListNode *right) {ListNode *emptyHead = new ListNode(0);//虚拟哨兵头ListNode *cur = emptyHead;while(left && right){if(left->val < right->val){cur->next = left;left = left->next;}else{cur->next = right;right = right->next;}cur = cur->next;}cur->next = (left == NULL ? right : left);cur = emptyHead->next;delete emptyHead;return cur;}
};

在这里插入图片描述

2.2 快速排序

class Solution {
public:ListNode* sortList(ListNode *head) {quicksort(head, NULL);return head;}void quicksort(ListNode *head, ListNode *tail) {if(head == tail || head->next == NULL)return;ListNode *mid = partition(head,tail);quicksort(head, mid);quicksort(mid->next, tail);}ListNode* partition(ListNode *head, ListNode *tail){int pivot = head->val;ListNode *left = head, *cur = head->next;while(cur != NULL && cur != tail){if(cur->val < pivot){left = left->next;swap(cur->val, left->val);}cur = cur->next;}swap(left->val, head->val);return left;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 基于对抗学习的弱监督知识图谱对齐

论文笔记整理&#xff1a;郭凌冰&#xff0c;浙江大学研究助理&#xff0c;研究方向为知识图谱的表示学习。绝大部分现有的知识图谱对齐方法都要求足够的已对齐三元组作为监督数据&#xff0c;但在现实世界中&#xff0c;获取大量的对齐三元组的代价十分高昂。本文提出一种同时…

美团数据平台Kerberos优化实战

背景 Kerberos 是一种网络认证协议&#xff0c;其设计目标是通过密钥系统为客户端、服务器端的应用程序提供强大的认证服务。 作为一种可信任的第三方认证服务&#xff0c;Kerberos是通过传统的密码技术&#xff08;如&#xff1a;共享密钥&#xff09;执行认证服务的&#xff…

Android官方开发文档Training系列课程中文版:如何避免ANR?

原文地址&#xff1a;http://android.xsoftlab.net/training/articles/perf-anr.html#anr 尽管你写代码可能通过了世界上所有的性能测试&#xff0c;但是它还是可能会让人感觉到卡顿。当应用卡的不成样子时&#xff0c;系统会给你弹一个”Application Not Responding”的对话框…

预训练语言模型真的是世界模型?

文 | 子龙自GPT、BERT问世以来&#xff0c;预训练语言模型在NLP领域大放异彩&#xff0c;刷新了无数榜单&#xff0c;成为当前学界业界的心头爱&#xff0c;其主体结构——Transformer——也在逐步的运用于其他领域的任务中&#xff0c;常见的如与CV的跨界&#xff0c;也有相对…

monk js_对象检测-使用Monk AI进行文档布局分析

原文链接&#xff1a;https://blog.csdn.net/weixin_26752075/article/details/108494230 monk js 计算机视觉 (Computer Vision) 介绍 (Introduction) This is an article on how Object Detection can help us in predicting various regions of a document. It can be usefu…

LeetCode 2019 力扣杯全国秋季编程大赛

文章目录1. 比赛结果2. 题目解析2.1 猜数字 Easy2.2 分式化简 Esay2.3 机器人大冒险 Medium2.4 覆盖 Hard2.5 发 LeetCoin Hard1. 比赛结果 2019.9.24晚&#xff0c;第一次参加线上比赛 比赛排名结果&#xff1a;582/1541&#xff0c;做出了2道题。。。 我证明了&#xff1a;…

美团广告实时索引的设计与实现

背景 在线广告是互联网行业常见的商业变现方式。从工程角度看&#xff0c;广告索引的结构和实现方式直接决定了整个系统的服务性能。本文以美团的搜索广告系统为蓝本&#xff0c;与读者一起探讨广告系统的工程奥秘。 领域问题 广告索引需具备以下基本特性&#xff1a; 层次化的…

论文浅尝 - AAAI2020 | 多通道反向词典模型

论文笔记整理&#xff1a;朱珈徵&#xff0c;天津大学硕士&#xff0c;自然语言处理方向。链接&#xff1a;https://arxiv.org/pdf/1912.08441.pdf动机反向词典将一段描述作为输入&#xff0c;并一起输出与该描述匹配的其他词&#xff0c;具有重要实用价值和自然语言处理研究价…

拒绝暴力调参!推荐一个模型Debug神器!

近些年深度学习在视觉、自然语言处理、语音等各个技术方向都诞生了不少创新应用&#xff0c;如智能识别医疗图像中的病灶&#xff0c;辅助医生做病情诊断&#xff1b;智能判别生产线上有质量问题的产品&#xff0c;减轻人工质检压力&#xff1b;对政务、金融等流程中的证件票据…

论文浅尝 - IJCAI2020 | Mucko:基于事实的多层跨模态知识推理视觉问答

论文笔记整理&#xff1a;陈卓&#xff0c;浙江大学计算机科学与技术系&#xff0c;博士研究生。论文链接&#xff1a;https://arxiv.org/pdf/2006.09073代码&#xff1a;https://github.com/astro-zihao/mucko发表会议&#xff1a;IJCAI 2020任务定义及背景VQA&#xff08;视觉…

LeetCode 40. 组合总和 II(排列组合 回溯)

1. 题目 给定一个数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明&#xff1a; 所有数字&#xff08;包括目标数&#xff09;都是正整数。 解集不能包含重…

质量运营在智能支付业务测试中的初步实践

背景 毋庸置疑&#xff0c;质量是决定产品能否成功、企业能否持续发展的关键因素之一。对于“质量时代”下的互联网企业&#xff0c;如何在快速迭代的节奏中兼顾质量&#xff0c;真正落地“人人重视质量、人人创造质量、人人享受质量”&#xff0c;这是对QA的要求&#xff0c;也…

新手手册:Pytorch分布式训练

文 | 花花机器学习算法与自然语言处理单位 | SenseTime 算法研究员目录0X01 分布式并行训练概述0X02 Pytorch分布式数据并行0X03 手把手渐进式实战A. 单机单卡B. 单机多卡DPC. 多机多卡DDPD. Launch / Slurm 调度方式0X04 完整框架 Distribuuuu0X05 Reference文中所有教学代码和…

Hotel booking酒店预订——数据分析与建模

Hotel booking酒店预订——数据分析与建模&#xff1a;https://zhuanlan.zhihu.com/p/196757364?utm_sourcewechat_session 写文章Hotel booking酒店预订——数据分析与建模&#xff08;转载翻译自kaggle&#xff09;海上泊舟数据分析师数据源&#xff1a;https://www.science…

论文浅尝 - ICLR2020 | Pretrained Encyclopedia: 弱监督知识预训练语言模型

论文笔记整理&#xff1a;陈想&#xff0c;浙江大学博士&#xff0c;研究方向为自然语言处理&#xff0c;知识图谱。Wenhan Xiong, Jingfei Du, William Yang Wang, Veselin Stoyanov.Pretrained Encyclopedia: Weakly Supervised Knowledge-Pretrained Language Model来源&…

LeetCode 216. 组合总和 III(排列组合 回溯)

1. 题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xff0c;并且每种组合中不存在重复的数字。 说明&#xff1a; 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]]示例 2: 输入: k 3, n 9 输出…

“小众”之美——Ruby在QA自动化中的应用

前言 关于测试领域的自动化&#xff0c;已有很多的文章做过介绍&#xff0c;“黑科技”也比比皆是&#xff0c;如通过Java字节码技术实现接口的录制&#xff0c;Fiddler录制内容转Python脚本&#xff0c;App中的插桩调试等&#xff0c;可见角度不同&#xff0c;对最佳实践的理解…

软考中级 软件设计师资料(考点分析+复习笔记+历年真题+电子版课本)

软考中级 软件设计师资料&#xff08;考点分析复习笔记历年真题电子版课本&#xff09;&#xff1a; https://blog.csdn.net/weixin_44754772/article/details/113763165 软件设计师是软考中级职称&#xff0c;相比高级的难度而言&#xff0c;中级难度较低&#xff0c;每个人花…

关于NLP相关技术全部在这里:预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...

神器推荐NLP近几年非常火&#xff0c;且发展特别快。像BERT、GPT-3、图神经网络、知识图谱等技术应运而生。我们正处在信息爆炸的时代、面对每天铺天盖地的网络资源和论文、很多时候我们面临的问题并不是缺资源&#xff0c;而是找准资源并高效学习。但很多时候你会发现&#xf…

LeetCode 77. 组合(回溯)

1. 题目 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个数的组合。 示例:输入: n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode-cn.com/problems/combin…