leetcode 【 Insertion Sort List 】 python 实现
2024-09-04 17:26:27
题目:
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一下逻辑,发现完全是无用判断浪费时间,去掉后就通过了。
最新文章
- 前端自动化构建工具gulp的使用总结
- JVM快速学习
- java.lang.OutOfMemoryError: PermGen space及其解决方法(转载)
- poj 1050 To the Max(最大子矩阵之和,基础DP题)
- Segment Tree Query I &; II
- PowerDesigner(二)-项目和框架矩阵(转)
- windows下安装swoole。
- cocos2d-x绑定ccb文件
- spring中的控制反转IoC和依赖注入DI
- js-引用类型-Array
- 操作MP3文件的元数据
- ●POJ 1195 Mobile phones
- iOS开发讲解SDWebImage,你真的会用吗?
- 在线激活win10、win8/8.1和office2019、2016、2013等的kms激活工具
- ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
- 025 SSM简单搭建
- Hibernate系列之ID生成策略
- isUserAMonkey? android真逗
- Bash Shell的环境配置文件
- 探索Python F-strings是如何工作