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

embedded/2024/11/14 19:09:11/

题目

环形链表

给你一个链表的头节点 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.ppmy.cn/embedded/113501.html

相关文章

VS2022中的调试

目录 前言&#xff1a; 使用&#xff1a; 调试&#xff1a; 前言&#xff1a; 在日益繁忙的工作环境中&#xff0c;选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度&#xff0c;甚至让团队协作更加顺畅。…

Vue3+TypeScript+Vite+Less 开发 H5 项目(amfe-flexible + postcss-pxtorem)

参考文档 amfe-flexible&#xff1a;将根元素 html 的字体大小 fontSize&#xff08;1rem&#xff09; 设为 viewWidth / 10&#xff0c;以适配不同终端 postcss-pxtorem&#xff1a;将 px 单位转换为 rem 单位 安装依赖 pnpm add amfe-flexible pnpm add postcss-pxtorem …

微信 SDK、NCF 、CO2NET、Senparc.AI 近期重大更新,欢迎解锁

◾️更新基础库&#xff0c;包括缓存、APM、CO2NET 核心模块等全面升级&#xff1b; ◾️更新支付接口调用过程中的 SM&#xff08;国密&#xff09;和 RSA 判断方式&#xff1b; ◾️更新微信 SDK 接口 Senparc.Weixin SDK ✍️v2024.9.10 更新基础库&#xff0c;包括缓…

代码随想录算法训练营第五十八天 | 拓扑排序精讲-软件构建

目录 软件构建 思路 拓扑排序的背景 拓扑排序的思路 模拟过程 判断有环 写代码 方法一&#xff1a; 拓扑排序 软件构建 题目链接&#xff1a;卡码网&#xff1a;117. 软件构建 文章讲解&#xff1a;代码随想录 某个大型软件项目的构建系统拥有 N 个文件&#xff0c;文…

【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题三

某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenStack搭建企业内部私有云平台&#xff0c;开源Kubernetes搭建云原生服务平台&#xff0c;选…

【java】scala ExecutorService停止线程池的简单案例

上代码&#xff1a; import org.scalatest.funsuite.AnyFunSuite import java.util.concurrent.{ExecutorService, Executors, TimeUnit}class ExecutorPoolTest extends AnyFunSuite {val threadPool: ExecutorService Executors.newFixedThreadPool(1)val job: Runnable n…

linux-Linux 内核与模块管理-内核基础

Linux 内核是操作系统的核心&#xff0c;它负责管理硬件资源和提供系统调用接口供用户程序使用。Linux 内核的设计极为灵活和模块化&#xff0c;它允许开发者通过加载和卸载模块来动态地扩展内核的功能。 一、Linux 内核概述 1.1 内核的基本功能 Linux 内核的主要功能可以分…

技术成神之路:设计模式(十三)访问者模式

介绍 访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许你在不改变对象结构的前提下&#xff0c;定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来&#xff0c;使得新的操作可以无缝地添加到现有对象中。 1.定…