LeetCode 148. Sort List–面试算法题–C++,Python解法


LeetCode题解专栏:LeetCode题解
LeetCode 所有题目总结:LeetCode 所有题目总结
大部分题目C++,Python,Java的解法都有。


题目地址:Sort List - LeetCode


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

Example 1:

Input: 4->2->1->3
Output: 1->2->3->4

Example 2:

Input: -1->5->3->4->0
Output: -1->0->3->4->5

我在现场面的时候,做的算法题是对单向链表进行选择排序。
如果使用Std中的排序,做法如下:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
bool judge(ListNode *left, ListNode *r) {return left->val < r->val;
}class Solution {public:ListNode *sortList(ListNode *head) {if (head == NULL) {return NULL;}vector<ListNode *> l;while (head != nullptr) {l.push_back(head);head = head->next;}std::sort(l.begin(), l.end(), judge);for (int i = 0; i < l.size() - 1; i++) {l[i]->next = l[i + 1];}l[l.size() - 1]->next = NULL;return l[0];}
};

这个解法不是最优的,因为要把所有节点都加入vector中。
但速度已经比较快了。

如果想要空间复杂度降到 O(1),需要用归并排序,迭代的做法,写起来真的难。我就不写了。

LeetCode 148. Sort List--面试算法题--C++,Python解法相关推荐

  1. LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法

    题目地址:Add Two Numbers II - LeetCode You are given two non-empty linked lists representing two non-neg ...

  2. 一道经典面试逻辑题的python解法

    前言: 好早之前看到的一个逻辑题:有两个2到99之间的整数,a知道这两个数的和,b知道这两个数的积. 第一句:a对b说:我不知道这两个数是多少,但我确信你也不知道. 第二句:b说:我知道了. 第三句: ...

  3. 力扣高频算法php_互联网公司最常见的面试算法题有哪些?

    很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试! 为什么?你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂. 你在面试的时候,卡壳了,一时间忘了怎么 ...

  4. 互联网公司最常见的面试算法题大集合!

      转载于 新智元   来源:Github 编辑:元子 [导读]LeetCode是一个美国的在线编程网站,收集了各个大厂的笔试面试题,对找工作的毕业生和开发者来说,非常有价值.很多求职者都会在Leet ...

  5. 常考面试算法题类型总结(来自知乎)

    作者:牛客网 链接:https://www.zhihu.com/question/24964987/answer/200681301 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  6. Java常见的面试算法题:实现两个线程交替打印1到100的数

    Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...

  7. 常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可)

    常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可) 比较典型的题目,如下有: 题目一: 1.启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程 ...

  8. 【笔试面试题】腾讯2013实习生面试算法题及参考答案

    总结了一下自己遇到的以及同学遇到的面试算法题,是技术二面. 有几道题给出了参考答案,还有几道没有好的思路.路过的大侠如果有好的思路请留个言交流下呗~ 1.八数码问题:3*3的格子,有1~8个数,空了一 ...

  9. 【归并排序+递归】LeetCode 148. Sort List

    LeetCode 148. Sort List Solution1:我的答案 很多递归 /*** Definition for singly-linked list.* struct ListNode ...

最新文章

  1. dubbo入门--Hello World
  2. 安徽池州贵池中学老师经典语录,我喷了
  3. down 网卡端口周期性的up_down 网卡端口周期性的up_思科交换机端口down或up故障原因...
  4. 比较常规治疗登记中阿巴西谱、阿达木单抗、依那西普和英夫利昔单抗治疗类风湿关节炎的疗效和起效时间...
  5. linux c之通过管道父子进程实现同步通信
  6. STL源码剖析 第七章 仿函数(函数对象)
  7. android数据保存
  8. 独立完成一个城市选择组件(阿里前端题目,内附知识点、思路)
  9. 面对大数据,我们应该干的事~大话开篇
  10. zabbix安装与配置
  11. LAMP兄弟连PHP全民总动员
  12. 3D视觉创新方案分享:仓储VSLAM/商品三维重建/静态场景重建/表情识别等多个方向...
  13. C#实现自动升级(附源码)
  14. webofscience入口注册_Web Of Science数据库免费检索入口,SCI论文期刊数据库免费入口...
  15. linux虚拟内存设置为多少合适,虚拟内存怎么设置最好_虚拟内存设置多少合适
  16. win10+ASP.NET(VS2019)连接sqlsever数据库
  17. 论文阅读——基于语法语义融合学习的功能代码克隆检测
  18. 在京东工作是一种什么样的体验
  19. 转贴-刻录品质经典文章之一
  20. 基于DSP 回传音通话降噪链路设计

热门文章

  1. RDKit | 化合物芳香度分子描述符的计算与相关性比较
  2. Android常用逆向工具总结(未完待续)
  3. 柚子的小小笔记本-Linux中的简单运算
  4. 那个脑袋生锈的我写的东西
  5. Android4.2.2中对安全性的改进
  6. python文本分类评价指标 top1如何计算_使用paddlehub自定义任务,具体是自定义文本分类任务中的评价指标时按照官方文档的方法做了之后报错了,请问应该如何解决?...
  7. 舵机任意角度程序_真香!!!飞特发布性价比超高的19kg磁编码360°双轴串口总线舵机STS3215...
  8. Water Research:南土所褚海燕组揭示冰川源水体和沉积物细菌群落显著分异
  9. Nature灵魂拷问:微生物组数据一大堆,如何能改变人类健康?
  10. 创建属于自己的调色板