力扣:147. 对链表进行插入排序(Python3)

题目:

给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头

插入排序 算法的步骤:

  1. 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
  2. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
  3. 重复直到所有输入数据插入完为止。

来源:力扣(LeetCode)

链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 1:

输入:head = [4,2,1,3]

输出:[1,2,3,4]

示例 2:

输入:head = [-1,5,3,4,0]

输出:[-1,0,3,4,5]

解法:

转成列表,列表排序,转成链表。

代码:

python 复制代码
# 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]:
        nums = []
        while head:
            nums.append(head.val)
            head = head.next
        nums.sort()
        head = point = ListNode(-5001)
        for num in nums:
            point.next = ListNode(num)
            point = point.next
        return head.next
相关推荐
YuSun_WK2 分钟前
配置MambaIRv2: Attentive State Space Restoration的环境
开发语言·python
Nick_zcy4 分钟前
开发基于python的商品推荐系统,前端框架和后端框架的选择比较
开发语言·python·前端框架·flask·fastapi
明月看潮生19 分钟前
青少年编程与数学 02-018 C++数据结构与算法 11课题、分治
c++·算法·青少年编程·编程与数学
Echo``1 小时前
2:QT联合HALCON编程—图像显示放大缩小
开发语言·c++·图像处理·qt·算法
一点.点1 小时前
李沐动手深度学习(pycharm中运行笔记)——04.数据操作
pytorch·笔记·python·深度学习·pycharm·动手深度学习
.似水1 小时前
2025.4.22_C_可变参数列表
java·c语言·算法
Niuguangshuo1 小时前
Python 设计模式:访问者模式
python·设计模式·访问者模式
Jamesvalley1 小时前
【Django】新增字段后兼容旧接口 This field is required
后端·python·django
Felven1 小时前
A. Ideal Generator
java·数据结构·算法
Luck_ff08102 小时前
【Python爬虫详解】第四篇:使用解析库提取网页数据——BeautifuSoup
开发语言·爬虫·python