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

【百日算法计划】:每日一题,见证成长(016)

题目

环形链表

给你一个链表的头节点 head ,判断链表中是否有环

思路1

用哈希表的思想,遍历链表,判断节点在哈希表中是否存在。

 public boolean hasCycle2(ListNode head) {
     HashSet<ListNode> hashSet = new HashSet<>();
     ListNode p = head;
     while (p != null){
         if (hashSet.contains(p)) return true;
         hashSet.add(p);
         p = p.next;
     }
     return false;
 }

思路2

快慢指针,慢指针走一步,快指针走两步,等快指针与慢指针重合时,即有环。

public boolean hasCycle(ListNode head) {
  if (head == null) return false;
  ListNode p = head; //慢指针
  ListNode q = head.next; //快指针 为啥初始值在第二个节点,不是第一个节点,如果也在第一个节点 下面的while循环 直接就return true了
  while (q != null && q.next != null && p != q){
     p = p.next;
     q = q.next.next; //快指针每次走两步,如果只走一步,那么快指针永远只领先慢指针一步,永远不会相遇
  }
  if (p == q) return true;
  else return false;
}

http://www.kler.cn/a/314820.html

相关文章:

  • 专题十八_动态规划_斐波那契数列模型_路径问题_算法专题详细总结
  • 三维测量与建模笔记 - 特征提取与匹配 - 4.2 梯度算子、Canny边缘检测、霍夫变换直线检测
  • 06.VSCODE:备战大项目,CMake专项配置
  • GxtWaitCursor:Qt下基于RAII的鼠标等待光标类
  • 21. Drag-Drop拖放操作(二) - 文件、表格和树的拖放实现
  • 【图像压缩感知】论文阅读:Self-supervised Scalable Deep Compressed Sensing
  • [数据集][目标检测]文本表格检测数据集VOC+YOLO格式6688张5类别
  • 华为HarmonyOS地图服务 3 - 如何开启和展示“我的位置”?
  • 掌控历史:如何通过Git版本管理工具提升你的开发效率
  • 【记录一下VMware上开虚拟端口映射到公网】
  • 华为云centos7.9按装ambari 2.7.5 hostname 踩坑记录
  • SpringBoot中基于Mybatis-Plus多表联查(无xml,通过注解实现)
  • 车载软件调试工具系列---Trace32简介UI界面简介
  • C#基础(16)实践:学生成绩管理系统
  • 1.随机事件与概率
  • TCP: Textual-based Class-aware Prompt tuning for Visual-Language Model
  • 【学习笔记】STM32F407探索者HAL库开发(四)F103时钟系统配置
  • 等保测评与网络安全等级划分
  • 【网络通信基础与实践第三讲】传输层协议概述包括UDP协议和TCP协议
  • linux 基础(一)mkdir、ls、vi、ifconfig
  • 汽车EDI:MöllerTech EDI项目案例
  • 实战讲稿:Spring Boot整合MyBatis
  • 前端入门:HTML+CSS简便开发的技巧
  • 美国火箭实验室Rocket Lab USA(RKLB)
  • Tomcat窗口运行修改窗口标题显示项目日期时间
  • 【开源免费】基于SpringBoot+Vue.JS教师工作量管理系统(JAVA毕业设计)