Sort a linked list in O(n log n) time using constant space complexity.

思路:采用归并排序或者快速排序

#include <iostream>
using namespace std; struct ListNode {
int val;
ListNode *next;
ListNode(int x): val(x), next(NULL) {}
}; class Solution {
public:
ListNode *sortList(ListNode *head) {
if (!head || head->next == NULL) return head; ListNode *PA = head, *PB = head;
while (PA && PB && PB->next && PB->next->next) {
PA = PA->next;
PB = PB->next->next;
}
PB = PA->next;
PA->next = NULL;
PA = head; PA = sortList(PA);
PB = sortList(PB);
return mergeList(PA, PB);
} ListNode *mergeList(ListNode *PA, ListNode *PB) {
if (!PB) return PA;
if (!PA) return PB; ListNode *merge, *head;
if (PA->val < PB->val) {
head = PA;
PA = PA->next;
}
else {
head = PB;
PB = PB->next;
} merge = head;
while (PA && PB) {
if (PA->val < PB->val) {
merge->next = PA;
PA = PA->next;
}
else {
merge->next = PB;
PB = PB->next;
}
merge = merge->next;
} if (PA) merge->next = PA;
if (PB) merge->next = PB; return head;
}
}; int main(int argc ,char *argv[])
{
ListNode *p, *q;
p = new ListNode();
p->next = new ListNode();
p->next->next = new ListNode(); Solution *solution = new Solution(); p = solution->sortList(p);
while(p) {
cout << p->val << endl;
p = p->next;
}
return ;
}

leetcode - [4]Sort List的更多相关文章

  1. C#版 - LeetCode 148. Sort List 解题报告(归并排序小结)

    leetcode 148. Sort List 提交网址: https://leetcode.com/problems/sort-list/  Total Accepted: 68702 Total ...

  2. 待字闺中之快排单向链表;leetcode之Sort List

    题目来源.待字闺中.原创@陈利人 .欢迎大家继续关注微信公众账号"待字闺中" 分析:思路和数据的高速排序一样,都须要找到一个pivot元素.或者节点. 然后将数组或者单向链表划分为 ...

  3. LeetCode——Insertion Sort List

    LeetCode--Insertion Sort List Question Sort a linked list using insertion sort. Solution 我的解法,假设第一个节 ...

  4. [LeetCode] Wiggle Sort II 摆动排序

    Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]... ...

  5. [LeetCode] Wiggle Sort 摆动排序

    Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] < ...

  6. [LeetCode] Insertion Sort List 链表插入排序

    Sort a linked list using insertion sort. 链表的插入排序实现原理很简单,就是一个元素一个元素的从原链表中取出来,然后按顺序插入到新链表中,时间复杂度为O(n2) ...

  7. 【Leetcode】Sort List JAVA实现

    Sort a linked list in O(n log n) time using constant space complexity. 1.分析 该题主要考查了链接上的合并排序算法. 2.正确代 ...

  8. [LeetCode] 148. Sort List 解题思路

    Sort a linked list in O(n log n) time using constant space complexity. 问题:对一个单列表排序,要求时间复杂度为 O(n*logn ...

  9. LeetCode之Sort List

    称号:Sort a linked list in O(n log n) time using constant space complexity. 对一个单链表进行排序,要求时间复杂度为O(n log ...

  10. 【LeetCode】 sort list 单清单归并

    称号:Sort a linked list in O(n log n) time using constant space complexity. 思路:要求时间复杂度O(nlogn) 知识点:归并排 ...

随机推荐

  1. vue2.0 动画

    //先来一个简单的入场 <template> <div id="box"> <input type="button" value= ...

  2. JS-事件心得

    写在前面的话:就我目前的水平来看,这两种方法不能一起使用,用on添加的事件removeEventListener()没办法删除,反之一样 注册事件的两种方式: on+事件名称 addEventList ...

  3. hadoop 启动的时候datanode报错 Problem connecting to server

    刚配置好的hadoop,namenode可以正常开启,但是datanode却不停的报错,并且不能正常启动: 2014-05-04 10:43:33,970 WARNorg.apache.hadoop. ...

  4. myeclipse的安装与配置和JUnit的简单使用

    安装配置 首先根据自己电脑系统选择合适的JDK版本 http://www.oracle.com/technetwork/java/javase/downloads/index.html 这是JDK下载 ...

  5. 关于ip包长度

    http://blog.csdn.net/naturebe/article/details/6712153 这篇文章总结的不错,转自:http://hi.baidu.com/to_wait/blog/ ...

  6. fedora如何删除某个包且不删除依赖它的相关包

    背景: 软件包编译过程中需要安装依赖,yum-builddep   SRPMS/xxx.src.rpm, 有时会遇到“多库版本保护”的问题,从而导致无法安装其他版本的依赖包 解决办法: rpm -e ...

  7. Notification 通知传值

    通知 是在跳转控制器之间常用的传值代理方式,除了代理模式,通知更方便.便捷,一个简单的Demo实现通知的跳转传值.       输入所要发送的信息 ,同时将label的值通过button方法调用传递, ...

  8. MVC 模式和模型 2

    MVC框架 一个实现 MVC 模式的应用包含模型.视图.控制器 3 个模块: 模型:封装了应用的数据和业务逻辑,负责管理系统业务数据 视图:负责应用的展示 控制器:负责与用户进行交互,接收用户输入.改 ...

  9. [Jmeter] Concurrency Thread Group

    Concurrency Thread Group : https://jmeter-plugins.org/wiki/ConcurrencyThreadGroup/ 参数介绍: Target Conc ...

  10. Centos 装系统 配置网卡,校准时间

    Vclient -控制台: 1.编辑网卡,第一块为外网,第二块为内网 #vi /etc/sysconfig/network-scripts/ifcfg-ens160 TYPE=Ethernet NAM ...