leetcode - [4]Sort List
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的更多相关文章
- C#版 - LeetCode 148. Sort List 解题报告(归并排序小结)
leetcode 148. Sort List 提交网址: https://leetcode.com/problems/sort-list/ Total Accepted: 68702 Total ...
- 待字闺中之快排单向链表;leetcode之Sort List
题目来源.待字闺中.原创@陈利人 .欢迎大家继续关注微信公众账号"待字闺中" 分析:思路和数据的高速排序一样,都须要找到一个pivot元素.或者节点. 然后将数组或者单向链表划分为 ...
- LeetCode——Insertion Sort List
LeetCode--Insertion Sort List Question Sort a linked list using insertion sort. Solution 我的解法,假设第一个节 ...
- [LeetCode] Wiggle Sort II 摆动排序
Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]... ...
- [LeetCode] Wiggle Sort 摆动排序
Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] < ...
- [LeetCode] Insertion Sort List 链表插入排序
Sort a linked list using insertion sort. 链表的插入排序实现原理很简单,就是一个元素一个元素的从原链表中取出来,然后按顺序插入到新链表中,时间复杂度为O(n2) ...
- 【Leetcode】Sort List JAVA实现
Sort a linked list in O(n log n) time using constant space complexity. 1.分析 该题主要考查了链接上的合并排序算法. 2.正确代 ...
- [LeetCode] 148. Sort List 解题思路
Sort a linked list in O(n log n) time using constant space complexity. 问题:对一个单列表排序,要求时间复杂度为 O(n*logn ...
- LeetCode之Sort List
称号:Sort a linked list in O(n log n) time using constant space complexity. 对一个单链表进行排序,要求时间复杂度为O(n log ...
- 【LeetCode】 sort list 单清单归并
称号:Sort a linked list in O(n log n) time using constant space complexity. 思路:要求时间复杂度O(nlogn) 知识点:归并排 ...
随机推荐
- Oracle Telnet 1521 失败
作中发现自己的电脑“telnet 127.0.0.1 1521”(注意:不要拼成telnet 127.0.0.1:1521 ) 可以通过,但是使用localhost.主机名来telnet,则失败. 解 ...
- mysql分组后将未分组的列合并成行GROUP BY,GROUP_CONCAT
今天遇到一个问题,消息通知可以同时发送给多个班级,而查询消息通知的时候并不需要根据班级分组,如何把多个班级的名称合并成一行数据追加到消息通知的后面呢 然后就发现了 group_concat: SELE ...
- 在ubuntu16.04编译安装httperf
在网上偶尔看到httperf可以在测试中使用.网上苦苦找不到ubuntu编译安装的方法.自己琢磨了一下,现在总结如下: apt install httperf vim /etc/security/li ...
- Linux 编译时内存不足
1.编译内核出现问题:No space left on device AS .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when wr ...
- ROS安装
本文参考地址:http://ros.exbot.net/wiki/cn(2f)indigo(2f)Installation(2f)Ubuntu.html http://wiki.ros.org/ind ...
- PAT 1063 计算谱半径(20)(代码)
1063 计算谱半径(20 分) 在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a1+b1i,⋯,an+ ...
- (O)js核心:作用域链
作用域 在一个函数被调用的时候,函数的作用域才会存在.此时,在函数还没有开始执行的时候,开始创建函数的作用域: 函数作用域的创建步骤: 1.函数形参的声明. 2.函数变量的声明. 3.普通变量的声 ...
- vc项目中加载多个lib遇到的问题
一个VC项目中 在网络加密 json解析等方面 加载了多个第三方库和文件 boost cryptpp rapidjson mysql的连接池等等 在使用mysql++的时候 多次报错 LNK 20 ...
- Python3实战系列之一(获取印度售后数据项目)
问题:公司在印度开设生产工厂并在当地销售手机,生产.销售系统均由印度开发维护.对总部需要的售后数据,采用每日在ftp上提供一个.xlsx文件,给总部使用.总部需要将此数据导入到总部的销量统计系统中,以 ...
- ubuntu samba共享后windows读写文件都是以nogroup问题
添加smb账号 sudo smbpasswd -a xxx 如果报错:Failed to add entry for user xxx 则是因为这个账号不存在 添加成功以后,过一会就可以重新登陆了(u ...