当前位置: 首页 > news >正文

力扣热题100之排序链表

题目

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
在这里插入图片描述

代码

方法一:

用列表存值,然后再排序,最后遍历列表原地改值

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]:if not head:return Nonehead_list=[]dummy=ListNode(0,head)cur=dummy.nextwhile cur:head_list.append(cur.val)cur=cur.nexthead_list.sort()i=0cur=dummy.nextwhile cur:cur.val=head_list[i] i+=1cur=cur.nextreturn dummy.next       

方法二:

首先将原链表分为两段,然后分别通过递归合并对这两段链表进行排序,最后合并两段链表

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]:def merge(left,right):dummy=ListNode(0)temp=dummywhile left and right:if left.val<right.val:temp.next=leftleft=left.nextelse:temp.next=rightright=right.nexttemp=temp.nexttemp.next= left if left else rightreturn dummy.nextif not head or not head.next:return headslow=headfast=head.nextwhile fast and fast.next:slow=slow.nextfast=fast.next.nextmid=slow.nextslow.next=Noneleft=self.sortList(head)right=self.sortList(mid)return merge(left,right)

相关文章:

  • leetcode - 前缀和
  • 前端框架token相关bug,前后端本地联调
  • 每日算法刷题Day14 5.24:leetcode不定长滑动窗口求子数组个数越长越合法4道题,用时1h20min
  • 【MySQL】07.表内容的操作
  • leetcode438.找到字符串中所有字母异位词
  • 电脑C盘清理技巧:释放空间,提升性能
  • 微信小程序调试
  • 前端大文件上传性能优化实战:分片上传分析与实战
  • JVM 的垃圾回收机制 GC
  • 【MySQL】06.内置函数
  • tvalid寄存器的理解
  • N2语法 判断,評価
  • Oracle 的SHRINK 操作实现原理
  • SpringAI 大模型应用开发篇-纯 Prompt 开发(舔狗模拟器)、Function Calling(智能客服)、RAG (知识库 ChatPDF)
  • redis使用RDB文件恢复数据
  • 企业级单元测试流程
  • 科学计算中的深度学习模型精解:CNN、U-Net 和 Diffusion Models
  • << C程序设计语言第2版 >> 练习1-14 打印输入中各个字符出现频度的直方图
  • 分布式事务知识点整理
  • ConvSearch-R1: 让LLM适应检索器的偏好或缺陷
  • 做网站必须注册的商标/西安seo关键词查询
  • wordpress插件分类/谷歌seo搜索引擎下载
  • 徐州h5模板建站/网络营销公司是做什么的
  • 国外做博彩网站安全吗/wp博客seo插件
  • 溧阳 做网站/站长工具一区
  • 美业门店管理系统/seo优化技术是什么