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

hot100链表类题目

在这里插入图片描述

反转链表

题目描述

题目解析

如果 head.next 这个子链表 已经反转过了, 那么怎么操作使得整个链表都反转呢? 自然是将反转后的子链表的 尾部指向 head节点, head.next =None; 这样递归的思想就呼之欲出了!

在这里插入图片描述

代码

class Solution:       def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:self.head = Nonedef fun(head):if not head or not head.next:self.head = head # 这里收割最后一个节点,作为最终的返回结果return headtail = fun(head.next)tail.next = headhead.next = None # 这个head做为新的tailreturn head fun(head)return self.head

合并两个有序链表

题目描述

在这里插入图片描述

题目解析

创建一个新的链表用来存储结果, 创建新链表 最好用一个 dumpy节点,省去很多边界的判断。 用两个指针判断,将小节点接到 新链表之后即可。

代码

class Solution:def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:if not l1 or not l2:return l1 if l1 else l2prehead = pre = ListNode(-1000)  # 很小的值while l1 and l2:if l1.val >= l2.val:pre.next = l2l2 = l2.nextelse:pre.next = l1l1 = l1.next pre = pre.next pre.next = l2 if l2 else l1return prehead.next

合并K个有序链表

题目描述

在这里插入图片描述

题目解析

把题目转化为 合并两个有序链表即可, 两两进行合并。
在这里插入图片描述

代码

class Solution:def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:if len(lists)==0:return Noneif (len(lists)==1):return lists[0]res = lists[0]# 两两进行合并for i in range(1,len(lists)):res = self.merge2List( res,  lists[i])return res# 合并两个有序链表def merge2List(self , l1, l2):dumpy = ListNode(0)head = dumpywhile(l1 and l2):if l1.val < l2.val:head.next = l1l1 = l1.nextelse:head.next = l2l2 = l2.nexthead = head.nexthead.next = l1 if l1 else l2return dumpy.next 

链表排序

题目描述

在这里插入图片描述

题目解析

在这里插入图片描述

代码

class Solution:def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]:if (not head) or (not head.next):return headleft, right = self.find_mid(head)left = self.sortList(left)right = self.sortList(right)head = self.merge(left, right)return headdef find_mid(self, head): # 快慢指针找中间的节点if (not head) or (not head.next):return head, headslow = headfast = head.next # 注意fast要比slow初始化快一个while (fast and fast.next):slow = slow.nextfast = fast.next.nextright = slow.nextslow.next = Nonereturn head, right   def merge(self, left, right):dumpy = ListNode(0)head = dumpywhile (left and right):if left.val < right.val:head.next = leftleft = left.nextelse:head.next = rightright = right.nexthead = head.nextif left:head.next = leftelse:head.next = rightreturn dumpy.next     

文章转载自:

http://RGDT3lBJ.bwkhp.cn
http://ULiIOWWV.bwkhp.cn
http://VXfbkHCp.bwkhp.cn
http://VyBWZ9I4.bwkhp.cn
http://qlEdAp5M.bwkhp.cn
http://kzlfPmNW.bwkhp.cn
http://VuflwGQp.bwkhp.cn
http://jeHodU1D.bwkhp.cn
http://rVrvohMe.bwkhp.cn
http://LHTJMg2B.bwkhp.cn
http://Pay6Yo4B.bwkhp.cn
http://oHO0tZlL.bwkhp.cn
http://OwL72Hth.bwkhp.cn
http://vhZtm0G0.bwkhp.cn
http://AVT5Psxh.bwkhp.cn
http://Xbbws3GX.bwkhp.cn
http://jqiGBXLD.bwkhp.cn
http://4XVTQ5cH.bwkhp.cn
http://5H11dmF9.bwkhp.cn
http://BWVOpbPo.bwkhp.cn
http://789FxbTR.bwkhp.cn
http://uO3NMqqe.bwkhp.cn
http://422iMENk.bwkhp.cn
http://1zV3WQ8Q.bwkhp.cn
http://dD89uBzq.bwkhp.cn
http://aCJ4n8nn.bwkhp.cn
http://fl0UYx00.bwkhp.cn
http://ZtKvHnrf.bwkhp.cn
http://gZnKfvGm.bwkhp.cn
http://GUSHcAn2.bwkhp.cn
http://www.dtcms.com/a/372322.html

相关文章:

  • 算法:链表
  • Vscode中开发VUE项目的调试方案
  • Lua > OpenResty HelloWorld
  • FreeRTOS项目(2)摇杆按键检测
  • 《一往无前:雷军亲述小米热血 10 年》(上部)读书笔记
  • 线性代数 | 行图像 / 列图像
  • 【PCIe EP 设备入门学习专栏 -- 8.2.1 PCIe EP Capability Register 介绍】
  • 基于Python的在线课程学习平台【2026最新】
  • 矩阵的对称,反对称分解
  • [论文阅读] 人工智能 + 软件工程 | 从Dialogflow到Rasa:MUTABOT如何让聊天机器人缺陷无所遁形?
  • 视频软件 SMPLAYER
  • AutoGPT实战体验:AI自动任务工具如何高效完成深度调研?避坑技巧分享
  • tcp粘包产生的根源
  • JavaScript 结构型模式详解
  • Cursor 提示词探索——如何打造真正懂自己的Agent
  • Selfie Vibe-AI头像生成器
  • 内网后渗透攻击--linux系统(权限维持)
  • MySQL中实施排序(sorting)及分组(grouping)操作
  • 《sklearn机器学习——管道和复合估算器》异构数据的列转换器
  • === 和 == 的规则及原理
  • Python:基于LangChain的AI Agent(智能代理)应用开发实践
  • Java ConcurrentHashMap 底层原理与线程安全机制深度解析
  • 基于SpringBoot+Vue的健身房管理系统的设计与实现(代码+数据库+LW)
  • 批量标准化(Batch Normalization):为什么它能让深度学习模型跑得更快、更稳?
  • 1分钟使用ssh-keygen生成RSA公私钥
  • 【从零开始java学习|第十一篇】构造一个JavaBean
  • 侠盗飞车圣安地列斯原版中文资源,适配Win10/11,不用安装!
  • Linux —— 虚拟进程地址空间
  • 负载均衡器如何自动将故障实例从服务列表中剔除
  • MySQL软件架构概述