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

Leetcode 3534. Path Existence Queries in a Graph II

  • Leetcode 3534. Path Existence Queries in a Graph II
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3534. Path Existence Queries in a Graph II

1. 解题思路

这一题是题目3532. Path Existence Queries in a Graph I的进阶版本。

在题目3532当中,我们只需要判断query当中的两个元素是否属于同一个簇,而这里,我们还需要额外判断其最短通路的长度。

因此,在构造出DSU进行元素相连性的判断之后,我们还需要额外对元素的最短通路进行一下考察。

此时,我们只需要对所有的元素按照其元素值进行有序排列,然后考察从某一个元素 u u u开始依照最大步幅maxDiff进行移动,至少需要几次才能达到目标元素 v v v。这个我们可以通过二分搜索进行优化。

2. 代码实现

给出python代码实现如下:

class DSU:def __init__(self, N):self.root = [i for i in range(N)]def find(self, k):if self.root[k] != k:self.root[k] = self.find(self.root[k])return self.root[k]def union(self, a, b):x = self.find(a)y = self.find(b)if x != y:self.root[y] = xreturnclass Solution:def pathExistenceQueries(self, n: int, nums: List[int], maxDiff: int, queries: List[List[int]]) -> List[int]:nodes = sorted([(x, i) for i, x in enumerate(nums)])dsu = DSU(n)for i in range(n-1):if nodes[i+1][0] - nodes[i][0] <= maxDiff:u, v = nodes[i+1][1], nodes[i][1]dsu.union(u, v)@lru_cache(None)def _query(i, j):if nodes[i][0] >= nodes[j][0]:return 0w = nodes[i][1]nxt= bisect.bisect_right(nodes, (nums[w]+maxDiff, n)) - 1return 1 + _query(nxt, j)def query(u, v):if nums[u] > nums[v]:return query(v, u)if dsu.find(u) != dsu.find(v):return -1elif u == v:return 0elif nums[u] == nums[v]:return 1i, j = bisect.bisect_left(nodes, (nums[u], u)), bisect.bisect_left(nodes, (nums[v], v))return _query(i, j)return [query(u, v) for u, v in queries]

提交代码评测得到:耗时1768ms,占用内存175.2MB。

http://www.xdnf.cn/news/215191.html

相关文章:

  • yum 安装 ncurses-devel 报错 baseurl 的解决方法
  • SpringCloud学习笔记
  • 焊接与热切割作业精选判断真题及答案
  • 模拟集成电路设计与仿真 : Feedback System
  • 甲骨文云2025深度解析:AI驱动的云原生生态与全球化突围
  • 端到端电力电子建模、仿真与控制及AI推理
  • AimRT 从零到一:官方示例精讲 —— 三、Executor示例.md
  • 爬虫学习笔记(四)---request入门
  • Keras模型保存、加载介绍
  • 技术驱动与模式创新:开源AI大模型与S2B2C商城重构零售生态
  • 在 MySQL 中建索引时需要注意哪些事项?
  • 使用Spring Boot实现WebSocket广播
  • 二叉树左叶子之和(后序遍历,递归求和)
  • VScode与远端服务器SSH链接
  • NS-SWIFT微调Qwen3
  • Electron Forge【实战】桌面应用 —— 将项目配置保存到本地
  • 【含文档+PPT+源码】基于微信小程序的乡村振兴民宿管理系统
  • BLE技术,如何高效赋能IoT短距无线通信?
  • 【展位预告】正也科技将携营销精细化管理解决方案出席中睿营销论坛
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记7
  • Unity Audio DSP应用与实现
  • C++多线程与锁机制
  • JavaScript函数声明大比拼
  • yolov8使用
  • 10 基于Gazebo和Rviz实现导航仿真,包括SLAM建图,地图服务,机器人定位,路径规划
  • BIM(建筑信息模型)与GIS(地理信息系统)的融合的技术框架、实现路径与应用场景
  • 【MCP Node.js SDK 全栈进阶指南】高级篇(2):MCP高性能服务优化
  • MCP 协议 ——AI 世界的 “USB-C 接口”:从认知到实践的全面指南
  • 源码角度分析 sync.map
  • Silvaco仿真中victory process的蒙特卡洛(Monte Carlo)离子注入