148. Sort List
2017-02-15 16:56
281 查看
Sort a linked list in O[/i](n[/i] log n[/i]) time using constant space complexity.
Total Accepted: 94368
Total Submissions: 342453
Difficulty: Medium
Contributors: Admin
如果需要对list本身进行操作,则需要使用时间复杂度O(NlogN),那么能用到的排序只有快排,归并,堆排
1. 因为list是单向的没法从后往前,所以需要快排的话,只能重新建立一个倒序的list,进行快排,平均时间复杂度O(NlogN),空间复杂度O(N)。下面的算法建立一个存储 ListNode * 的 vector 数组,从而实现双向访问
2. 归并排序,需要使用快慢指针,找到中间node位置,如果使用递归的话,需要考虑栈的消耗空间,所以时间复杂度O(NlogN),空间复杂度O(logN)
3. 堆排序,需要建立一个最小堆,空间复杂度O(N),时间复杂度O(NlogN)
现在看来满足常量空间的只能是2,归并排序并将其写成非递归形式。
null
Total Accepted: 94368
Total Submissions: 342453
Difficulty: Medium
Contributors: Admin
分析
首先可以使用和147相同的思想,把数字复制到vector<int> 中,然后排序,再赋值回去1. 因为list是单向的没法从后往前,所以需要快排的话,只能重新建立一个倒序的list,进行快排,平均时间复杂度O(NlogN),空间复杂度O(N)。下面的算法建立一个存储 ListNode * 的 vector 数组,从而实现双向访问
现在看来满足常量空间的只能是2,归并排序并将其写成非递归形式。
相关文章推荐
- 【Leet Code】148. Sort List---Medium
- 148. Sort List 链表归并排序
- [LeetCode]148.Sort List
- 148. Sort List
- LeetCode 148. Sort List
- LeetCode 148.Sort List 链表排序
- 148. Sort List
- LeetCode 148. Sort List(链表排序)
- [LeetCode]problem 148. Sort List
- leetcode No148. Sort List
- 148. Sort List | Java最短代码实现
- leetcode148. Sort List
- LeetCode 148. Sort List
- Sort-----148. Sort List
- leetcode题解Java | 148. Sort List
- Leetcode-148. Sort List
- Leetcode 148. Sort List
- 148. Sort List
- LeetCode *** 148. Sort List
- 148. Sort List