力扣: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
相关推荐
happylifetree6 小时前
Python09:核心语法-数据存储与运算-字面量
python
longlongzihan6 小时前
LeetCode 17电话号码的字母组合:回溯算法(DFS)详解
c++·算法·leetcode·深度优先
心之语歌6 小时前
Tkinter 画布基本梳理
运维·服务器·python
封印师请假去地球钓鱼6 小时前
边解边变的问题:从“决策依赖“一词出发
人工智能·算法
Wx-bishekaifayuan7 小时前
django个性化旅游路线推荐平台49005-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
今晚打老虎7 小时前
c++之提高A(前缀和)(第三课)
数据结构·c++·算法
小白快快跑哦8 小时前
python-字符串全解(六):正则表达式-量词
python·正则表达式·字符串
禹凕8 小时前
机器学习之Selenium(Machina Learning about Selenium)
爬虫·python·selenium·测试工具·机器学习
不会就选b8 小时前
算法日常・每日刷题--<贪心>26
数据结构·算法
ebiobiz10 小时前
基于 GD32 Embedded Builder (GEB) 与 Nimmake 的 MCU 工程搭建指南
c++·python·单片机·嵌入式硬件·mcu