在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 **示例 1:** ```js 输入: 4->2->1->3 输出: 1->2->3->4 ``` **示例 2:** ```js 输入: -1->5->3->4->0 输出: -1->0->3->4->5 ``` 附赠可测试leetcode链接:[leetcode](https://leetcode-cn.com/problems/sort-list/solution/jsjie-pai-xu-lian-biao-wen-ti-by-user7746o/)
Activity
sisterAn commentedon Jul 6, 2020
解答:采用归并排序
归并排序采用了分治策略,将数组分成2个较小的数组,然后每个数组再分成两个更小的数组,直至每个数组里只包含一个元素,然后将小数组不断的合并成较大的数组,直至只剩下一个数组,就是排序完成后的数组序列。
对应于链表喃?
第一步:分割
第二步:归并(合并有序链表)
代码实现
引入递归算法的复杂度分析:
复杂度分析
关于复杂度分析,请看这篇:前端进阶算法1:如何分析、统计算法的执行效率和资源消耗?
优化递归
使用迭代代替递归,优化时间复杂度:O(logn) —> O(1)
今天太晚了,明日更新🤦♀️
jasonting5 commentedon Jul 7, 2020
先递归后合并
cutie6 commentedon Jan 6, 2021
这里 ListNode 的类定义方便给一下嘛?
Jet12138 commentedon Sep 11, 2022
/**
*/
leetcode题目作答那里有。 以后碰到leetcode的链表题目,ListNode的结构都是这个构造函数,它主要用实例化链表节点对象。