题目

Sort a linked list using insertion sort.

代码:oj测试通过 Runtime: 860 ms

 # Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
# @param head, a ListNode
# @return a ListNode
def insertionSortList(self, head): if head is None or head.next is None:
return head dummyhead = ListNode(0)
dummyhead.next = head curr = dummyhead.next
while curr.next is not None:
if curr.next.val < curr.val:
pre = dummyhead
while pre.next.val < curr.next.val:
pre = pre.next
tmp = curr.next
curr.next = tmp.next
tmp.next = pre.next
pre.next = tmp
else:
curr = curr.next return dummyhead.next

思路

首先要知道插入排序的原理。

对于单链表来说,需要做指针的交换。

小白记忆插入排序的原理只有一句话:类比扑克牌抓牌,把牌按大小插入。

需要注意的地方是

不要加多余的判断,否则会超时;第一次运行的时候,我在里面的while循环条件判断上加了一句 pre != curr,结果就报超时了。

check一下逻辑,发现完全是无用判断浪费时间,去掉后就通过了。

最新文章

  1. 前端自动化构建工具gulp的使用总结
  2. JVM快速学习
  3. java.lang.OutOfMemoryError: PermGen space及其解决方法(转载)
  4. poj 1050 To the Max(最大子矩阵之和,基础DP题)
  5. Segment Tree Query I &amp; II
  6. PowerDesigner(二)-项目和框架矩阵(转)
  7. windows下安装swoole。
  8. cocos2d-x绑定ccb文件
  9. spring中的控制反转IoC和依赖注入DI
  10. js-引用类型-Array
  11. 操作MP3文件的元数据
  12. ●POJ 1195 Mobile phones
  13. iOS开发讲解SDWebImage,你真的会用吗?
  14. 在线激活win10、win8/8.1和office2019、2016、2013等的kms激活工具
  15. ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
  16. 025 SSM简单搭建
  17. Hibernate系列之ID生成策略
  18. isUserAMonkey? android真逗
  19. Bash Shell的环境配置文件
  20. 探索Python F-strings是如何工作

热门文章

  1. Struts2笔记2
  2. linux中python安装
  3. C++ vector容器类型的用法及注意
  4. pta 编程题6 树的同构
  5. OpenGL位图变形问题
  6. JavaScript模块化开发的那些事
  7. python_29_三级菜单2
  8. java编程基础——从上往下打印二叉树
  9. Linux学习记录(二)
  10. ssh: connect to host localhost port 22: Connection refused