LeetCode OJ-- Sort List **@
链表排序,要求使用 O(nlgn) 时间,常量空间。
使用归并的思路
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *findMid(ListNode *head)
{
ListNode *mid;
ListNode *fast = head->next;
ListNode *slow = head;
while(fast && fast->next)
{
fast = fast->next;
fast = fast->next;
slow = slow->next;
}
mid = slow;
return mid;
}
ListNode *sortList(ListNode *head) {
if(head == NULL || head->next == NULL)
return head;
ListNode *tmp = findMid(head);
ListNode *right = sortList(tmp->next);
tmp->next = NULL;
ListNode *left = sortList(head); ListNode *newHead = new ListNode(-);
newHead->next = merge(left,right);
return newHead->next;
}
ListNode *merge(ListNode *left, ListNode *right)
{
ListNode *dummy = new ListNode(-);
for(ListNode *p = dummy; left!=NULL || right!= NULL; p = p->next)
{
int leftVal = left == NULL? INT_MAX:left->val;
int rightVal = right == NULL?INT_MAX:right->val;
if(leftVal <= rightVal)
{
p->next = left;
left = left->next;
}
else
{
p->next = right;
right = right->next;
}
}
return dummy->next;
}
};
LeetCode OJ-- Sort List **@的更多相关文章
- [LeetCode OJ] Sort Colors
		
Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...
 - LeetCode OJ 题解
		
博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...
 - 【LeetCode OJ】Interleaving String
		
Problem Link: http://oj.leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 ...
 - 【LeetCode OJ】Reverse Words in a String
		
Problem link: http://oj.leetcode.com/problems/reverse-words-in-a-string/ Given an input string, reve ...
 - LeetCode OJ学习
		
一直没有系统地学习过算法,不过算法确实是需要系统学习的.大二上学期,在导师的建议下开始学习数据结构,零零散散的一学期,有了链表.栈.队列.树.图等的概念.又看了下那几个经典的算法——贪心算法.分治算法 ...
 - LeetCode OJ 297. Serialize and Deserialize Binary Tree
		
Serialization is the process of converting a data structure or object into a sequence of bits so tha ...
 - C#版 - LeetCode 148. Sort List 解题报告(归并排序小结)
		
leetcode 148. Sort List 提交网址: https://leetcode.com/problems/sort-list/ Total Accepted: 68702 Total ...
 - 备份LeetCode OJ自己编写的代码
		
常泡LC的朋友知道LC是不提供代码打包下载的,不像一般的OJ,可是我不备份代码就感觉不舒服- 其实我想说的是- 我自己写了抓取个人提交代码的小工具,放在GitCafe上了- 不知道大家有没有兴趣 ht ...
 - LeetCode OJ 之 Maximal Square (最大的正方形)
		
题目: Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ...
 - 待字闺中之快排单向链表;leetcode之Sort List
		
题目来源.待字闺中.原创@陈利人 .欢迎大家继续关注微信公众账号"待字闺中" 分析:思路和数据的高速排序一样,都须要找到一个pivot元素.或者节点. 然后将数组或者单向链表划分为 ...
 
随机推荐
- Python中利用LSTM模型进行时间序列预测分析
			
时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺 ...
 - git 新建项目
			
备份. 1.cd dirctory 2.git init 3.git.oschina.net 上新建项目. 4.git remote add origin XXX.git 5.git push ...
 - my first article
			
BLOG: http://codetask.org GIT: http://git.oschina.net/codetimer
 - ios系统的中arm指令集
			
arm结构处理器,几乎所有的手机都基于arm,其在嵌入式系统中应用非常广泛. ARM 处理器因为低功耗和小尺寸而闻名,它的性能在同等功耗的产品中也很出色.这里我们注意一点,模拟器并不运行arm代码,软 ...
 - 苹果手机制作gif图片
			
前一段介绍了一款很好用的在模拟器上录制gif图片的工具licecap(地址:http://www.cnblogs.com/10-19-92/p/5593785.html), 但是licecap不能使用 ...
 - C++学习基础十——子类构造函数与析构函数的执行
			
1.子类构造函数的执行: 先执行父类的构造函数,再执行成员对象的构造函数,最后执行自身的构造函数. 当继承多个类时,构造函数的 执行顺序与继承时的顺序 相同,而与子类构造函数调用父类构造函数的顺序无关 ...
 - Bootstrap导航点击菜单跳转与点击缩放菜单折叠按钮缓冲效果插件jquery.singlePageNav.min.js
			
引入步骤: <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></scrip ...
 - Linux启动/停止/重启Mysql数据库的方法——转载
			
Mysql启动.停止.重启常用命令 a.启动方式1.使用 service 启动:[root@localhost /]# service mysqld start (5.0版本是mysqld)[root ...
 - isa指针
			
转载自 http://www.cnblogs.com/zhangdashao/p/4438540.html 可以去这里看详细的. 每个Objective-C对象都有一个隐藏的数据结构,这个数据结构是O ...
 - SVM3 Soft Margin SVM
			
之前分为两部分讨论过SVM.第一部分讨论了线性SVM,并且针对线性不可分的数据,把原始的问题转化为对偶的SVM求解.http://www.cnblogs.com/futurehau/p/6143178 ...