在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

示例 1:

输入: 4->2->1->3
输出: 1->2->3->4
示例 2:

输入: -1->5->3->4->0
输出: -1->0->3->4->5

插入排序,肯定超时了,时间复杂度最坏是O(n^2)

 class Solution:
def sortList(self, head: ListNode) -> ListNode:
if head==None or head.next==None:
return head
dummyY=ListNode(0)
dummyY.next=head
p = head
r = p.next
p.next=None
p=r
while p != None:
pre = dummyY
r = p.next
while pre.next!=None and pre.next.val <p.val:
pre = pre.next
p.next = pre.next
pre.next = p
p = r
return dummyY.next

归并

 class Solution:
def sortList(self, head: ListNode) -> ListNode:
if not head or not head.next:return head
slow,fast = head,head.next
while fast and fast.next:
fast,slow=fast.next.next,slow.next
mid,slow.next=slow.next,None
left,right=self.sortList(head),self.sortList(mid) h=res = ListNode(0)
while left and right:
if left.val < right.val :h.next,left=left,left.next
else:h.next,right=right,right.next
h=h.next
h.next=left if left else right
return res.next

最新文章

  1. Mybatis关联查询和数据库不一致问题分析与解决
  2. [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类
  3. 第九周 psp
  4. linux下IPTABLES配置详解(转)
  5. constraint使用方法总结
  6. thinkphp 自定义标签
  7. Linux - 扩展
  8. oracle中的初始化参数文件
  9. 如何将一个Jsp网站打包发布(发布为War文件)
  10. webservice07#契约优先#webservice实现简单的动态web项目
  11. JAVA设计模式之:命令模式
  12. 安装SQL Server DQS 和 MDS
  13. Tomcat NIO 模型的实现
  14. Pandas系列(七)-计算工具介绍
  15. Mac上通过iterm 上传文件到服务器
  16. sparkStreaming 与fafka直接方式 进行消费者偏移量的保存如redis 里面 避免代码改变与节点重启后的数据丢失与序列化问题
  17. thinkphp5+qrcode生成二维码
  18. JS框架图
  19. scratch资源
  20. session的三种超时设置

热门文章

  1. Python学习之==&gt;接口开发
  2. 正则表达式——Unicode 匹配规则
  3. &lt;nginx.conf&gt; nginx设置用户权限
  4. vue分别打包测试环境和正式环境
  5. Nginx 配置二级虚拟目录访问 Laravel 重写
  6. [LeetCode] 132. 分割回文串 II
  7. 搜索专题: HDU1027Ignatius and the Princess II
  8. vscode配置汇总
  9. 拼接HTML代码在UIWebVIew中显示
  10. tomcat 启动日志乱码,idea中运行Tomcat也出现中文乱码:“淇℃伅”