E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
leetcode148
LeetCode 148. 排序链表:归并排序的细节解析
示例1:链表长度为偶数(`1->2->3->4`)三、完整代码实现四、复杂度分析五、总结题目描述
LeetCode148
题要求对链表进行排序,时间复杂度需为O(nlogn),且空间复杂度为O(logn)。
进击的小白菜
·
2025-07-12 18:07
2025
Top100
详解
leetcode
链表
算法
链表排序(
Leetcode148
)
题目将一个链表实现排序,要求其时间复杂度为O(nlogn)空间复杂度为常数举例:链表4->2->1->3排序后:1->2->3->4解题思路选取排序算法首先,在数组中我们拥有的基本排序算法可多了,选择排序、插入排序、希尔排序(插入排序的变形)、快速排序、归并排序、堆排序等,其中选择排序、插入排序的时间复杂度都是O(n2)级别,希尔排序O(n1.5),快排、归并和堆排序时间复杂度是O(nlogn)。
zhouwaiqiang
·
2023-12-23 12:44
Leetcode148
排序链表(大白话说思路)——链表专题
思路:找中点,用递归不断分割,然后使用合并有序链表的方法合并左右链表/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,ListN
小拖漫漫技术路
·
2023-11-05 15:20
面试
链表
list
leetcode
排序链表-力扣
LeetCode148
题C++版
力扣:给你链表的头结点head,请将其按升序排列并返回排序后的链表。方法一:自顶向下的归并排序(递归)(时间复杂度nlogn,空间复杂度logn:空间复杂度来自递归的函数调用栈)classSolution{public:ListNode*sortList(ListNode*head){if(!head||!head->next)returnhead;//快慢指针寻找中间节点ListNode*slo
缄默0603
·
2023-09-27 01:46
LeetCode
链表
leetcode
c++
归并排序再复习
排序链表
leetcode148
题:本题目要求将链表进行排序。时间复杂度为O(nlogn)的排序算法有:归并排序、堆排序、快排。其中由于链表不能随机读取,归并排序最适合链表的排序。
Ambrosedream
·
2023-09-04 01:01
刷题笔记
后端相关
链表
算法
快速排序
归并排序-
leetcode148
因为链表中节点的顺序要打乱,所以要使用一个假头计算链表的长度,按不同节点个数对链表进行分组排序每次分组排序,都需要遍历整个链表,拆分节点、合并需要一个pcur指针和一个tail指针pcur指针用于指向原链表,通过pcur来遍历原来的链表tail指针用来连接分组排序后的节点需要一个cut函数和一个merge函数cut用于将链表进行切分,切分出不同个数的节点merge用于将切分出来的节点组,两两进行合
编程菜菜_要努力
·
2023-08-29 12:58
刷题笔记
leetcode
c++
LeetCode148
经典题目记录(链表排序:快排+递归归并+迭代归并)
packageP12;importjava.util.Arrays;publicclassM77Merge{//归并排序★★★★★★(递归+非递归)★★★★★★//lc148.排序链表publicstaticvoidmain(String[]args){int[]arr={1,2,31,31,21,42,53,64,652,13,34,12,14,35,64,65,46,68,68};int[]r
Cat凯94
·
2023-04-21 11:33
Java基础
数据结构
链表
数据结构
算法
73-归并排序练习-
LeetCode148
排序链表
题目给你链表的头结点head,请将其按升序排列并返回排序后的链表。示例1:输入:head=[4,2,1,3]输出:[1,2,3,4]示例2:输入:head=[-1,5,3,4,0]输出:[-1,0,3,4,5]示例3:输入:head=[]输出:[]提示:链表中节点的数目在范围[0,5*10^4]内-10^5<=Node.val<=10^5进阶:你可以在O(nlogn)时间复杂度和常数级空间复杂度下
hyperNZ
·
2023-04-09 11:29
Java数据结构
链表
数据结构
算法
2021字节跳动校招秋招算法面试真题解题报告--
leetcode148
排序链表,内含7种语言答案
148.排序链表1.题目描述在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序2.解题报告针对nlogn的排序算法,主要有快速排序,归并排序和堆排序。其中,堆排序利用了数组的连续特性。所以这里不能采用。其次,在快速排序中,设计大量数字的交换且单链表因为只能单向遍历,使用partition不是很直观。所以,本题采用归并排序链表版来实现。具体思路如下:1.使用快慢指针,找到链表的中点。2
·
2021-08-10 18:01
旷视 2019 春季算法实习生面试总结
20190314一面自我介绍项目介绍2019春季实习生招聘之项目介绍了解过哪些CV领域一张图片多个类别怎么设计损失函数,多标签分类问题SVM、决策树优缺点,非线性回归用什么方法,L1、L2正则化区别链表归并快排
LeetCode148
seniusen
·
2020-10-11 08:02
旷视 2019 春季算法实习生面试总结
20190314一面自我介绍项目介绍2019春季实习生招聘之项目介绍了解过哪些CV领域一张图片多个类别怎么设计损失函数,多标签分类问题SVM、决策树优缺点,非线性回归用什么方法,L1、L2正则化区别链表归并快排
LeetCode148
weixin_30826761
·
2020-08-04 19:11
LeetCode148
——排序链表
我的LeetCode代码仓:https://github.com/617076674/LeetCode原题链接:https://leetcode-cn.com/problems/sort-list/description/题目描述:知识点:归并排序、链表思路:自顶向下的归并排序本题和LeetCode147——对链表进行插入排序其实是同一个问题——对链表进行排序操作,但是本题多了时间复杂度O(nlo
清風逐尘乀
·
2020-08-03 23:15
LeetCode题解
leetcode148
链表排序
leetcode148
链表排序归并排序快排链表原题链接:https://leetcode-cn.com/problems/sort-list/归并排序/***Definitionforsingly-linkedlist
BYJZX
·
2020-08-03 11:11
单链表
排序算法
链表排序算法
(
LeetCode148
中等)输入:4->2->1->3输出:1->2->3->4输入:-1->5->3->4->0输出:-1->0->3->4->52)思路对于这题我有两种解法,一种是时间复杂度O(n2
澈彻策
·
2020-07-15 01:19
链表算法
leetcode148
——Sort List
题目大意:时间复杂度O(nlogn),空间复杂度O(1)对链表排序分析:满足时间空间复杂度的排序方法——非递归归并(bottom-to-up)。1个和1个合并=>2个和2个合并=>4个和4个合并,自底向上完成归并排序。代码:/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx
tzyshiwolaogongya
·
2020-07-15 00:43
数据结构-链表
LeetCode148
——排序链表
思考:提到O(nlogn)的时间复杂度进行排序首先就想到归并排序,但是空间复杂度不是O(n)吗?为什么是常熟级空间复杂度,常数级空间复杂度,指的是算法所需的额外存储空间与问题的输入规模无关。后来看到别人的博客:SortList——经典(链表中的归并排序)“因为原来使用归并时,都是O(N)的,需要复制出相等的空间来进行赋值归并。对于链表,实际上是可以实现常数空间占用的(链表的归并排序不需要额外的空间
假老练啊哦
·
2020-07-07 22:50
LeetCode每日一题
leetcode148
归并排序 (递归与非递归c++实现)
归并排序:是一种非线性时间比较类排序,采用分治的策略,通过比较来决定元素间的相对次序.时间复杂度不受数据本身影响.时间复杂度为O(nlogn),空间复杂度为O(n).算法描述:1.把长度为n的输入序列分成两个长度为n/2的子序列2.对这两个子序列分别采用归并排序3.将两个排好序的子序列合并为一个最终的排序序列.c++递归实现:#includeusingnamespacestd;voidMergeS
糖葫芦君
·
2020-06-30 08:06
C++
数据结构
算法
148. Sort List 链表排序(C++)
参考链接:1、148_SortList|O(nlogn)链表排序|Medium2、SortList3、
LeetCode148
—SortList(C++JavaPython)4、LeetCode(148)
sqiu_11
·
2020-06-26 14:08
Leetcode——链表
leetcode148
——排序链表——java实现
题目要求:分析:时间复杂度为O(nlogn),空间复杂度为O(1),就想到二分法,所以就想到归并排序,利用分治法来做。我们可以想到以前的一道题目,传送门:leetcode21——合并两个有序链表——java实现直接把这道题目的排序拿过来调用一下就好了,方便得很。由于链表中的节点个数可能有奇数个,也有可能有偶数个,我们可以利用之前环形链表中采用的快慢指针来找这个链表的中间部分,如果是奇数个,那么就是
烛承幻
·
2020-06-25 21:27
leecode
LeetCode 148 排序链表Java
LeetCode148
排序链表Java题目描述代码Raymond于2019.12.04晚,第一篇CSDN博客。题目描述在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序。
Raymond166
·
2020-06-25 04:18
LeetCode
leetcode148
排序链表_C++_med
在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序。示例1:输入:4->2->1->3输出:1->2->3->4示例2:输入:-1->5->3->4->0输出:-1->0->3->4->5思路:这个时间复杂度,肯定是要用归并排序,快速排序,堆排序之一的排序的算法。先写归并排序:归并排序的核心就是从中间分,分,分,然后合并。有一点要注意的是:拆分的时候有要把链表分开,借助cur指针。C
浅浅的栗子
·
2019-08-31 21:06
数据结构
Java实现单链表的快速排序和归并排序,大厂 HR 如何面试
本文描述了
LeetCode148
题sort-list的解法。
asafinder2
·
2019-04-20 11:23
java
链表的归并排序
leetcode148
题题目描述:在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序。示例1:输入:4->2->1
E_N_T_J
·
2018-12-21 20:14
数据结构
链表的归并排序
leetcode148
题题目描述:在O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序。示例1:输入:4->2->1
E_N_T_J
·
2018-12-21 20:14
数据结构
Java实现单链表的快速排序和归并排序
本文描述了
LeetCode148
题sort-list的解法。
weixin_30894389
·
2018-02-18 16:00
LeetCode148
Sort List
题目链接:https://leetcode.com/problems/sort-list/题目大意:给一个无序链表排序,要求时间复杂度O(nlogn),空间复杂度O(1)。分析:最开始看到空间复杂度为常数,第一反应是堆排序。然而并不行,堆排序是基于数组的吧,然后是快排,但是快排掌握的并不好,而且想了一下归并排序如果是用链表的话,其实是可以避免空间复杂度为O(n)的情况的。里面还涉及一个小算法吧,就
codeTZ
·
2015-12-03 20:00
LeetCode
数据结构
链表
归并排序
148
LeetCode148
:Sort List
题目: Sort a linked list in O(n log n) time using constant space complexity. 解题思路: 根据题目要求,可知只能用归并排序,其他排序算法要么时间复杂度不满足,要么空间复杂度不满足 实现代码: #include <iostream> using namespace std; /* Sort a
·
2015-10-31 11:09
LeetCode
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他