leetcode 2359. 找到离给定两个节点最近的节点

article/2025/7/14 8:49:20

给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,每个节点 至多 有一条出边。

有向图用大小为 n 下标从 0 开始的数组 edges 表示,表示节点 i 有一条有向边指向 edges[i] 。如果节点 i 没有出边,那么 edges[i] == -1 。

同时给你两个节点 node1 和 node2 。

请你返回一个从 node1 和 node2 都能到达节点的编号,使节点 node1 和节点 node2 到这个节点的距离 较大值最小化。如果有多个答案,请返回 最小 的节点编号。如果答案不存在,返回 -1 。

注意 edges 可能包含环。

示例 1:

输入:edges = [2,2,3,-1], node1 = 0, node2 = 1
输出:2
解释:从节点 0 到节点 2 的距离为 1 ,从节点 1 到节点 2 的距离为 1 。
两个距离的较大值为 1 。我们无法得到一个比 1 更小的较大值,所以我们返回节点 2 。

示例 2:

输入:edges = [1,2,-1], node1 = 0, node2 = 2
输出:2
解释:节点 0 到节点 2 的距离为 2 ,节点 2 到它自己的距离为 0 。
两个距离的较大值为 2 。我们无法得到一个比 2 更小的较大值,所以我们返回节点 2 。

提示:

  • n == edges.length
  • 2 <= n <= 10^5
  • -1 <= edges[i] < n
  • edges[i] != i
  • 0 <= node1, node2 < n

分析:题目提到每个点至多有一条出边,可以从某个点出发,一直沿着出边遍历,得到这个点可以到达的所有点,以及对应的距离。之后对比 node1 和 node2 能达到的点和距离,找到符合要求的点即可。

typedef struct node
{int pos,dis;
}node;int closestMeetingNode(int* edges, int edgesSize, int node1, int node2) {int t=1;int len1[edgesSize+5],len2[edgesSize+5],flag1[edgesSize+5],flag2[edgesSize+5];node num1[edgesSize+5],num2[edgesSize+5];memset(flag1,0,sizeof(flag1));memset(flag2,0,sizeof(flag2));flag1[node1]=1,num1[node1].dis=0,num1[node1].pos=node1;for(int i=node1;i<edgesSize;i=edges[i]){if(i==-1||edges[i]==-1)break;if(!flag1[edges[i]])num1[edges[i]].dis=t,num1[edges[i]].pos=edges[i],flag1[edges[i]]=1,t++;else break;}t=1;flag2[node2]=1,num2[node2].dis=0,num2[node2].pos=node2;for(int i=node2;i<edgesSize;i=edges[i]){if(i==-1||edges[i]==-1)break;if(!flag2[edges[i]])num2[edges[i]].dis=t,num2[edges[i]].pos=edges[i],flag2[edges[i]]=1,t++;else break;}int ans=-1,index=-1;for(int i=0;i<edgesSize;++i){if(flag1[i]&&flag1[i]==flag2[i]){if(ans==-1||ans>fmax(num1[i].dis,num2[i].dis))ans=fmax(num1[i].dis,num2[i].dis),index=num1[i].pos;else if(ans==fmax(num1[i].dis,num2[i].dis))index=fmin(index,num1[i].pos);}}return index;
}


http://www.hkcw.cn/article/goSsBarEqU.shtml

相关文章

Qt creator 设计页面控件认识与了解

记录一下 Qt 中的认识与了解&#xff1a; 在 Qt 中&#xff0c;这些功能属于 Qt Designer 的组件过滤系统&#xff0c;旨在帮助开发者在对象浏览器中快速定位和使用不同类型的控件和组件。以下是每个功能的详细讲解&#xff1a; ‌Layouts&#xff08;布局&#xff09;‌&…

[网页五子棋][对战模块]前后端交互接口(建立连接、连接响应、落子请求/响应),客户端开发(实现棋盘/棋子绘制)

文章目录 约定前后端交互接口建立连接建立连接响应针对"落子"的请求和响应 客户端开发实现棋盘/棋子绘制部分逻辑解释 约定前后端交互接口 对战模块和匹配模块使用的是两套逻辑&#xff0c;使用不同的 websocket 的路径进行处理&#xff0c;做到更好的耦合 建立连接 …

Redisson学习专栏(三):高级特性与实战(Spring/Spring Boot 集成,响应式编程,分布式服务,性能优化)

文章目录 前言一、Spring Boot深度整合实战1.1 分布式缓存管理1.2 声明式缓存1.3 响应式编程 二、分布式服务治理2.1 服务端实现2.2 客户端调用2.3 高级特性2.4 服务治理功能 三、分布式任务调度引擎四、连接池配置与网络参数调优4.1 连接池配置4.2 网络参数调优4.3 集群模式特…

行程规划:智能规划,轻松旅行

在旅行中&#xff0c;一个好的行程规划是成功旅行的关键。它不仅能帮助你合理安排时间&#xff0c;还能让你的旅行更加经济、高效。成都为普云科技有限公司推出的“行程规划”APP&#xff0c;就是这样一个贴心的旅行助手。它不仅能让你自由记录旅游路线&#xff0c;还能实时记账…

动态报表筛选多项时的优化处理

如图所示 在有比较麻烦且数量比较的动态筛选条件时&#xff0c;就可以单独用一个页面&#xff0c;来囊括所有的参数选项&#xff0c;依次把从接口那得到的筛选列表按id来成数组&#xff0c;依次判断返回赋即可&#xff0c;非常方便

PSpice软件快速入门系列--07.如何进行Worst Case最坏情况分析

背景介绍&#xff1a;由于电路特性受电路中不同元器件的影响程度不同&#xff0c;当电路中不同元器件分别变化时&#xff0c;即使元器件值的变化相同&#xff0c;但电路特性变化的绝对值不会相同&#xff0c;而且其变化的方向也可能不同。PSpice提供了最坏情况分析&#xff0c;…

从收货到上架,海外仓系统如何智能优化入库管理?

在全球电商交易蓬勃发展的当下&#xff0c;跨境电商市场规模持续扩大&#xff0c;海外仓的重要性愈发凸显。其中高效、精准的入库管理&#xff0c;不仅是提升海外仓运营效率的关键&#xff0c;更是赢得客户信任、增强市场竞争力的核心要素。然而&#xff0c;传统的入库模式往往…

特朗普称美国汽车制造商“必须在国内生产整车”

当地时间5月30日,美国总统特朗普表示,包括特斯拉在内的美国汽车制造商必须在美国生产整车和所有零部件,而不是在国外生产。特朗普表示,之前汽车制造商在加拿大、墨西哥、欧洲生产零部件,这让他很困扰,但在接下来的一年里,这些汽车制造商“必须在美国生产整车”。(总台记…

特朗普称6月4日起把进口钢铁关税提高至50%

当地时间5月30日,美国总统特朗普在宾夕法尼亚州举行的一场集会上表示,将把进口钢铁的关税从25%提高至50%。随后,特朗普在社交媒体平台上发文表示,该决定从自6月4日起生效。美国白宫当天在社交媒体上发布公告称,“为进一步保护美国钢铁行业免受外国和不公平竞争的影响,从下…

官方通报:跳至兵马俑三号坑男子已被控制

造成两尊铠甲武士俑损坏 官方通报跳至兵马俑三号坑男子已被控制陕西省西安市公安局临潼分局今日发布警情通报,跳至兵马俑三号坑男子已被公安机关控制。2025年5月30日17时30分许,孙某(男,30岁)进入兵马俑景区参观时,翻越遗址坑护栏及防护网跳至三号坑内推拉陶俑,造成两尊…

【速通RAG实战:进阶】21、取长补短:LangChain与LlamaIndex等RAG框架的企业级融合实践

一、RAG框架的现状与核心挑战 (一)主流框架的优势与局限 LangChain、LlamaIndex等RAG框架已成为构建智能问答系统的基础设施,但在企业级落地中暴露出以下矛盾: 灵活性与专业性的冲突:LangChain的模块化设计支持复杂工作流,但对垂直领域(如医疗、金融)的深度优化不足;…

宝塔部署 Vue + NestJS 全栈项目

这里写自定义目录标题 前言一、Node.js版本管理器1、安装2、配置 二、NestJS项目管理&#xff08;等同Node项目&#xff09;1、Git安装2、拉取项目代码3、无法自动认证4、添加Node项目5、配置防火墙&#xff08;两道&#xff09; 三、Vue项目管理1、项目上传2、Nginx安装3、配置…

MES系统:助力企业数字化转型

MES管理系统是一个高效、灵活的生产管理系统&#xff0c;能够帮助企业提高生产效率和产品质量&#xff0c;从而获得更大的商业价值。如果你是一家制造企业&#xff0c;那么MES管理系统是你不能错过的重要工具。 一、MES系统核心功能大揭秘&#xff1a; 1、计划管理&#xff1a…

当客服遇见大模型:知识管理智能化转型

数字化转型浪潮下&#xff0c;客服中心作为企业服务前沿阵地&#xff0c;正经历一场深刻变革。面对日益多元、个性化的客户需求&#xff0c;传统依赖人工维护的知识管理体系已难以为继。AI大模型的崛起&#xff0c;为客服中心开辟了新赛道——这不仅是技术迭代&#xff0c;更是…

[NOIP 2001 普及组] 求先序排列 Java

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String infixOrder sc.nextLine(); // 中序String postOrder sc.nextLine(); // 后序sc.close();System.out.println(preOrder(infixOrder, postOrder))…

可蓝牙通信、光电隔离型RS-485集线器——DAM-3222

产品概述 DAM-3222是一款防各类浪涌设计光电隔离型RS-485集线器&#xff0c;集成2路RS485路主机和1路RS485从机接口。支持有线串口连接电脑上位机配置&#xff0c;还支持蓝牙通信&#xff0c;手机蓝牙可通过微信小程序进行参数配置&#xff0c;在安装现场也可以轻松通过手机修…

数据结构 --链表

前言 今天把链表重新用c写了一遍&#xff0c;首先单纯的写一个链表并不困难&#xff0c;无非是定义一个结构体ListNode&#xff0c;设置变量data和下一个指针的地址next&#xff0c;然后完成增删查改的操作&#xff0c;需要注意的是在删除节点的时候记得先保存当前需要删除的节…

【原理扫描】不安全的crossdomain.xml文件和CORS(跨站资源共享)原始验证失败验证与彻底方案

不安全的crossdomain.xml文件【原理扫描】 CORS(跨站资源共享)原始验证失败【原理扫描】 吐槽一下 该漏扫是通过内网漏扫部署服务进行扫描内网minio端口探测到该minio配置不当造成的威胁。 通过nginx配置无效&#xff0c;且必须从MINIO本身解决&#xff1b;MINIO配置存在兼容…

【Web应用】若依框架:基础篇11功能详解-系统接口

文章目录 ⭐前言⭐一、课程讲解⭐二、自己动手实操⭐总结 标题详情作者JosieBook头衔CSDN博客专家资格、阿里云社区专家博主、软件设计工程师博客内容开源、框架、软件工程、全栈&#xff08;,NET/Java/Python/C&#xff09;、数据库、操作系统、大数据、人工智能、工控、网络、…

每日一题:H指数

继续给大家带来每日一题 题目描述 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指…