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

力扣Hot100--141.环形链表

力扣Hot100–141.环形链表

要求:给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。

解题思路1: 使用 哈希表 记录所有访问过的节点,检查是否重复访问
1、在遍历每个节点时,先检查它是否在集合中,然后再将其加入集合;
2、如果遍历到链表末尾,说明无环。
空间、时间复杂度都为O(n)

常见的解题思路:快慢指针法(Floyd判圈算法)
空间复杂度O(1),时间复杂度O(n)

代码1:

class Solution:def hasCycle(self, head: Optional[ListNode]) -> bool:mode_set = set()current = headwhile current:if current in mode_set:return Truemode_set.add(current)current = current.nextreturn False

代码2:

class Solution:def hasCycle(self, head: ListNode) -> bool:if not head or not head.next:return Falseslow = headfast = head.nextwhile slow != fast:if not fast or not fast.next:return Falseslow = slow.nextfast = fast.next.nextreturn True

代码3:
也是快慢指针法,只是起点一样

class Solution:def hasCycle(self, head: Optional[ListNode]) -> bool:if not head or not head.next:  # 处理空链表或单节点无环的情况return Falseslow = head  fast = head result = Falsewhile (fast and fast.next):  slow = slow.next  fast = fast.next.next  if slow == fast:result = True  breakreturn result 
http://www.dtcms.com/a/427723.html

相关文章:

  • 单粒子与总剂量辐射损伤机制与芯片抗辐照设计
  • 俄文网站建设网页设计与制作 pdf
  • 照片做视频的软件 模板下载网站编程课程培训机构排名
  • 现代梨园花果管理虚拟仿真实验
  • 超越聊天框:用MCP InteractiveDialog构建下一代人机协作体验
  • mongo无法清除固定集合数据的另类解决办法
  • Python采集闲鱼商品详情并返回JSON数据全攻略
  • 在ideal中访问页面时出现 HTTP 404 - Not Found
  • 文山建设局网站网站可以做软著吗
  • 个人网站建立内容wordpress建数据库步骤
  • 数造科技于2025全球数据管理峰会斩获多项殊荣
  • 建立网站成本最低做网站 做手机app要学什么软件
  • 多普勒超声胎心信号处理
  • 学习Python中Selenium模块的基本用法(17:使用ActionChains操作键盘)
  • 保证git直线提交(rebase)而非创建分支(merge)
  • 用vscode做一个简单的扫雷小游戏
  • 建设银行个人官方网站phpcms网站seo怎么做
  • 二维凸包——Andrew 算法学习笔记
  • 北京网站建设小程序开发360网站建设的目标是什么
  • 河南省建筑市场一体化平台整站优化系统
  • A模块 系统与网络安全 第四门课 弹性交换网络-3
  • 企业电子商务网站平台建设公司概况简介
  • WSL安装并配置到pyCharm
  • 国庆假期小知识:旗帜为何会迎风飘扬
  • 冀教版三年级上册英语-学习思路和引导方法
  • Cesium 内置变量 czm_ellipsoidInverseRadii
  • 做塑胶网站需要什么建设部网站被黑
  • 树莓派:微雪显示器7寸触摸屏使用
  • Spring AI alibaba Prompt模板Advisor自定义
  • 深圳龙华企业网站设计微信推广小程序怎么做