【LeetCode】147.对链表进行插入排序
2023-09-14 09:13:25 时间
1. 题目
2. 分析
写链表的题,最需要理清思路。因为思路清晰的情况下,才能保证不出岔子。
3. 代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def insertionSortList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return head
ss = head # start of sorted
# 开始插入排序
head = head.next
ss.next = None
while(head):
tmp = head.next
# 寻找一个合适的点安排 head 这个指针
start = ss
pre = None
while(start and start.val <= head.val):
pre = start
start = start.next
if pre:
pre.next = head # 接上头
head.next = start # 接上尾部
else:
head.next = ss
ss = head
head = tmp
return ss
相关文章
- LeetCode买卖股票之一:基本套路(122)
- ☆打卡算法☆LeetCode 224. 基本计算器 算法解析
- ☆打卡算法☆LeetCode 203. 移除链表元素 算法解析
- LeetCode第一题:两数之和-C++
- LeetCode笔记:Biweekly Contest 84
- LeetCode笔记:Weekly Contest 304
- <leetcode刷题-数组>删除排序数组中的重复项
- LeetCode第三题,五个版本迭代优化带你吃透two pointers算法
- leetcode-剑指offer59-I 滑动窗口的最大值
- 刷LeetCode链表之前你需要掌握的设置结点技巧C++
- LeetCode 21. 合并两个有序链表 题解 C++
- LeetCode刷题_LeetCode刷题手册
- LeetCode 237. 删除链表中的节点
- LeetCode 206. 反转链表
- leetcode-142. 环形链表 II
- leetcode 160. 相交链表 js 实现
- 【Day 01】力扣(LeetCode)每日一刷[506.相对名次][264.丑数][23.合并N个升序链表]
- 【day10】LeetCode(力扣)刷题(注释详细)[707.设计链表][278.第一个错误的版本][98. 验证二叉搜索树]
- leetcode 101. 对称二叉树 js实现
- LeetCode题解——哈希表篇
- golang刷leetcode:数据流中的中位数
- JavaScript刷LeetCode拿offer-链表篇
- LeetCode 82:删除排序链表中的重复元素 II
- 【leetcode 206】 反转链表(简单)
- 【Leetcode-链表强训】
- [数据结构]链表OJ(leetcode)
- leetcode每日一练:将句子排序