尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Kimi    LeetCode LCP 21. 追逐游戏 Java实现
以下是 LeetCode LCP 21. 追逐游戏的 Java 实现基于 BFS 拓扑排序找环的经典解法javaclass Solution {private ListListInteger g;public int chaseGame(int[][] edges, int startA, int startB) {int n edges.length;g new ArrayList();for (int i 0; i n; i) {g.add(new ArrayList());}int[] degree new int[n];for (int[] e : edges) {int u e[0] - 1, v e[1] - 1;// 特判A和B相邻第一回合直接抓到if ((u startA - 1 v startB - 1) ||(u startB - 1 v startA - 1)) {return 1;}g.get(u).add(v);g.get(v).add(u);degree[u];degree[v];}startA--;startB--;// BFS求A、B到各点的最短距离int[] da bfs(startA);int[] db bfs(startB);// 拓扑排序找环基环树N个点N条边去掉所有叶子后剩余的就是环boolean[] inLoop new boolean[n];Arrays.fill(inLoop, true);QueueInteger q new LinkedList();for (int i 0; i n; i) {if (degree[i] 1) {q.add(i);}}while (!q.isEmpty()) {int u q.poll();inLoop[u] false;for (int v : g.get(u)) {degree[v]--;if (degree[v] 1) {q.add(v);}}}// 统计环的长度int loopLen 0;for (int i 0; i n; i) {if (inLoop[i]) loopLen;}// 判断B能否逃脱若环长度3且存在环上点i满足 da[i] db[i] 1// 说明B能先到达环上某点且A无法拦截B可在环上永远绕圈if (loopLen 3) {for (int i 0; i n; i) {if (inLoop[i] da[i] db[i] 1) {return -1;}}}// 若A能追到B答案为所有满足 da[i] db[i] 1 的点中 da[i] 的最大值// 因为B会选择一个A到达时间比B到达时间至少多2的点尽可能拖延int ans 0;for (int i 0; i n; i) {if (da[i] db[i] 1) {ans Math.max(ans, da[i]);}}return ans;}private int[] bfs(int start) {int n g.size();int[] dis new int[n];Arrays.fill(dis, -1);QueueInteger q new LinkedList();q.add(start);dis[start] 0;while (!q.isEmpty()) {int u q.poll();for (int v : g.get(u)) {if (dis[v] -1) {dis[v] dis[u] 1;q.add(v);}}}return dis;}}核心思路1. 图结构分析题目给的是 N 个点 N 条边的连通图即基环树一棵树 一条边形成环2. 找环用类似拓扑排序的方法不断删除度为 1 的叶子节点最后剩下的就是环上的点3. BFS 求距离分别计算 A 和 B 到所有点的最短距离 da[] 和 db[]4. 判断逃脱条件- 若环长度 3且存在环上点满足 da[i] db[i] 1则 B 能先上环并永远绕圈返回 -1- 若环长度 3即使 B 上了环A 也能在有限步内抓到 B因为三角形环上无处可逃5. 计算答案A 能追到 B 时B 会选择一个满足 da[i] db[i] 1 的点尽可能拖延答案就是这些点中 da[i] 的最大值复杂度- 时间复杂度O(N)- 空间复杂度O(N)
RELATED

相关推荐

Java 基础学习

Java 基础学习

一:Java,变量,八大数据类型 Java:最开始叫oak,用来做嵌入式开发,直到1995年浏览器诞生,sun公司把oak(JVM)重新改版,正式命名为Java,2010年被oracle公司收购 Java语言的特点&#x…

📅 2026/10/14 11:49:09
贝锐向日葵IPKVM无网远控产品系列解析:技术架构与市场表现

贝锐向日葵IPKVM无网远控产品系列解析:技术架构与市场表现

引言:IPKVM技术在内网场景中的实际需求在工业控制、医疗影像、能源电力、数据中心等领域,大量关键设备运行于封闭内网或完全离线的环境中。这些设备通常不允许安装第三方远程控制软件,或因系统崩溃、蓝屏等原因导致软件远控失效。传统的现场维…

📅 2026/10/14 10:28:56
群晖NAS安装百度网盘客户端:SPK套件完整指南

群晖NAS安装百度网盘客户端:SPK套件完整指南

群晖NAS安装百度网盘客户端:SPK套件完整指南 【免费下载链接】synology-baiduNetdisk-package 项目地址: https://gitcode.com/gh_mirrors/sy/synology-baiduNetdisk-package 开源项目 synology-baiduNetdisk-package 用 Docker 容器把百度网盘 Linux 客户端…

📅 2026/10/19 3:39:16
MORE NEWS

更多资讯

📰

古诗词知识图谱+情感分析+智能问答毕设全攻略

每年到毕业设计开题那段时间,总有人抱着"知识图谱""情感分析""智能问答""大模型写诗"这几个词来找我,觉得随便拎一个出来都够写一篇论文,最后拼成一个大而全的题目之后又不知道怎么落地。我见过不少…

📰

AI教材生成全流程:从大纲到低查重的原创性工程

做教材编写的人,多半都经历过这样的夜晚:资料摊了一桌,章节改到第七版,提交前用查重平台一跑,红色标注像一片疹子,瞬间头皮发麻。教材不是论文,但重复率要求同样严格,更麻烦的是&…

📰

KnowRob数据层实战:地图、日志与模型的组织与导入

简介:这份资源是面向机器人知识表示与语义建模方向学习者的 KnowRob 数据存储库,集中存放与 KnowRob 知识库配套的样本数据、测试数据、评估数据及通用实验数据集。其设计初衷是将数据与主代码分离,便于在不同研究上下文中重复使用&#xff0…

📰

OpenClaw Token成本优化:分层路由机制实战解析

1. 从一次账单说起:为什么你的Token总是不够用做OpenClaw项目的朋友应该都经历过这个场景:月初看账单,发现API调用费用比预期高了一大截,翻看日志发现大量请求都打给了最强模型,其中不少只是简单的文本分类、关键词提取…

📰

4-信息系统安全基础

计算机安全 6 大特性计算机安全包含 6 个关键因素:机密性、完整性、抗否认性、可用性、可审计性、可靠性1. 机密性 Confidentiality保证信息不被未授权访问;就算拿到数据,也看不懂内容,无法使用。手段:访问控制、加密一…

📰

别急着下载DLL修复工具:报错原因与官方排查命令指南

你正在码字或调试程序,屏幕上突然弹出一条“缺少 xxx.dll,无法继续运行”的提示。我敢打赌,许多人第一反应就是打开搜索页输入“系统dll文件修复工具”,然后找个“一键修复”的绿色版下载。这个动作本身,往往是后续更大…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬