LeetCode 148. Sort List
来源:互联网 发布:有数据分析软件吗 编辑:程序博客网 时间:2024/04/24 06:42
description:
Sort a linked list in O(n log n) time using constant space complexity.
题目要求使用O(nlogn)的时间复杂度和确定的控件复杂度,但是一开始的时候没有注意到确定的个空间复杂度这一个词,结果使用了merge sort的排序方式。
没有通过测试,但是也可以拿出来写一写,其中的有些内容还是非常有意思的。
merge sort是一种稳定排序,使用分值的方式进行实现。
开始的时候,要有首先计算ListNode right,然后让middle.next = null,此处是为了让left的内容随着right变化,否则就可能出现内存溢出的情况。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode sortList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode middle = findMiddle(head); ListNode right = sortList(middle.next); middle.next = null; ListNode left = sortList(head); ListNode value = mergeListNode(left, right); return value; } private ListNode findMiddle(ListNode node) { ListNode slow = node; ListNode fast = node.next; while (fast.next != null && fast.next.next != null) { slow = slow.next; fast = fast.next.next; } return slow; } private ListNode mergeListNode(ListNode left, ListNode right) { ListNode dummy = new ListNode(0); ListNode head = dummy; while (left != null && right != null) { if (left.val > right.val) { head.next = right; right = right.next; } else { head.next = left; left.next = left.next; } head = head.next; } if (left != null) { head.next = left; } else { head.next = right; } return dummy.next; }}
0 0
- LeetCode 148. Sort List
- [LeetCode]148.Sort List
- [leetcode] 148.Sort List
- 148. Sort List LeetCode
- Leetcode 148. Sort List
- LeetCode *** 148. Sort List
- LeetCode 148. Sort List
- leetcode.148. Sort List
- LeetCode-148.Sort List
- [Leetcode] 148. Sort List
- 148. Sort List --- leetcode
- LeetCode - 148. Sort List
- leetcode 148. Sort List
- Leetcode 148. Sort List
- [LeetCode] 148. Sort List
- Leetcode-148. Sort List
- LeetCode 148. Sort List
- [LeetCode]148. Sort List
- 简单购物车
- 第一讲 Android 屏幕适配基本概念
- photoshop打开图片没反应问题的解决以及改变图片尺寸
- bzoj 3275: Number 最小割
- 数据结构与算法(c++)--prim算法
- LeetCode 148. Sort List
- golang学习笔记之yaml文件处理
- 感觉非常棒的ssm框架搭建
- 2017武汉大学校赛网络预选赛e题
- 在Eclipse中使用Mybatis
- Oracle的trunc函数
- Android常用的15个框架
- 12 学习阶段总结
- 登录界面及记住密码的实现