【LeetCode每日一题:1697. 检查边长度限制的路径是否存在~~~并查集+数组排序+排序记录下标位置】

news2024/11/27 14:43:44

题目描述

给你一个 n 个点组成的无向图边集 edgeList ,其中 edgeList[i] = [ui, vi, disi] 表示点 ui 和点 vi 之间有一条长度为 disi 的边。请注意,两个点之间可能有 超过一条边 。

给你一个查询数组queries ,其中 queries[j] = [pj, qj, limitj] ,你的任务是对于每个查询 queries[j] ,判断是否存在从 pj 到 qj 的路径,且这条路径上的每一条边都 严格小于 limitj 。

请你返回一个 布尔数组 answer ,其中 answer.length == queries.length ,当 queries[j] 的查询结果为 true 时, answer 第 j 个值为 true ,否则为 false 。

示例 1:
在这里插入图片描述

输入:n = 3, edgeList = [[0,1,2],[1,2,4],[2,0,8],[1,0,16]], queries = [[0,1,2],[0,2,5]]
输出:[false,true]
解释:上图为给定的输入数据。注意到 0 和 1 之间有两条重边,分别为 2 和 16 。
对于第一个查询,0 和 1 之间没有小于 2 的边,所以我们返回 false 。
对于第二个查询,有一条路径(0 -> 1 -> 2)两条边都小于 5 ,所以这个查询我们返回 true 。
示例 2:
在这里插入图片描述

输入:n = 5, edgeList = [[0,1,10],[1,2,5],[2,3,9],[3,4,13]], queries = [[0,4,14],[1,4,13]]
输出:[true,false]
解释:上图为给定数据。

提示:

2 <= n <= 105
1 <= edgeList.length, queries.length <= 105
edgeList[i].length == 3
queries[j].length == 3
0 <= ui, vi, pj, qj <= n - 1
ui != vi
pj != qj
1 <= disi, limitj <= 109
两个点之间可能有 多条 边。

求解思路

  1. 这道题目通过并查集+排序记录原位置下标的位置来求解,具体的求解思路结合下面的代码学习。

实现代码

class Solution {
    public boolean[] distanceLimitedPathsExist(int n, int[][] edgeList, int[][] queries) {
        // 首先按照每条边的距离进行升序排列
        Arrays.sort(edgeList, (a, b) -> a[2] - b[2]);
        // 创建查询数组中对应的下标位置
        Integer[] index = new Integer[queries.length];
        for (int i = 0; i < queries.length; i++) {
            index[i] = i;
        }
        // 通过limit排序,记录对应数组排序后位置下标的值
        Arrays.sort(index, (a, b) -> queries[a][2] - queries[b][2]);
        // 创建并查集每个点的小集合
        int[] uf = new int[n];
        for (int i = 0; i < n; i++) {
            uf[i] = i;
        }
        // 结果数组
        boolean[] res = new boolean[queries.length];
        int k = 0;
        for (int i : index) {
            while (k < edgeList.length && edgeList[k][2] < queries[i][2]) {
                union(uf, edgeList[k][0], edgeList[k][1]);
                k++;
            }
            //判断是否同处于一个集合
            res[i] = find(uf, queries[i][0]) == find(uf, queries[i][1]);
        }
        return res;
    }

    //并查集模块
    public int find(int[] uf, int x) {
        if (uf[x] == x) {
            return x;
        }
        return uf[x] = find(uf, uf[x]);
    }

    public void union(int[] uf, int x, int y) {
        x = find(uf, x);
        y = find(uf, y);
        uf[y] = x;
    }
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音商家引流的正确方法,抖音商家引流脚本实操教程。

大家好我是你们的小编一辞脚本&#xff0c;今天给大家分享新的知识&#xff0c;很开心可以在CSDN平台分享知识给大家,很多伙伴看不到代码我先录制一下视频 在给大家做代码&#xff0c;给大家分享一下抖音商家引流脚本的知识和视频演示 不懂的小伙伴可以认真看一下&#xff0c…

【lssvm回归预测】基于遗传算法优化最小二乘支持向量机GA-lssvm实现数据回归预测附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

图书商城小程序开发,实现图书便捷式选购

1995年联合国教文组织将4月23日规定为世界读书日&#xff0c;由此可见对全世界人民来说读书都是一件很重要的事。并且据调查数据显示&#xff0c;去年我国成年国民图书阅读量达到了59.7%&#xff0c;同比增长了0.2个百分点&#xff1b;人均纸质图书阅读量为4.76&#xff0c;较上…

记一次线上问题 → 对 MySQL 的 ON UPDATE CURRENT_TIMESTAMP 的片面认知

问题背景 需求背景 需求&#xff1a;对商品的上架与下架进行管控&#xff0c;下架的商品不能进行销售 上架与下架的管控&#xff0c;在我负责的项目&#xff08;单据系统&#xff09;中实现&#xff1b;销售的控制则是在另外一个项目&#xff08;POS系统&#xff09;中实现的…

人工智能课后作业_python实现广度优先遍历搜索(BFS)(附源码)

2 广度优先遍历搜索(BFS) 2.1算法介绍2.2实验代码2.3实验结果2.4实验总结 2.1算法介绍 广度优先搜索算法&#xff08;英语&#xff1a;Breadth-First-Search&#xff0c;缩写为BFS&#xff09;&#xff0c;是一种图形搜索算法。简单的说&#xff0c;BFS是从根节点开始&#…

MATLAB动态导入文件功能(txt文件读入)

目录 一、界面搭建 1.axes坐标轴 2.LIST表 3.button按钮 二、属性 三、代码实现 一、界面搭建 1.axes坐标轴 需要有一个可以显示点的axes&#xff0c;以及一个展示点坐标XYZ的LIST表控件 2.LIST表 LIST需要添加表头&#xff0c;XYZ&#xff0c;行1,2,3,4,.. 右键列表…

降本增效: 蚂蚁在 Sidecarless 的探索和实践

文&#xff5c;王发康 &#xff08;花名&#xff1a;毅松 &#xff09; 蚂蚁集团技术专家、MOSN 项目核心开发者 深耕于高性能网络服务器研发&#xff0c;目前专注于云原生 ServiceMesh、Nginx、MOSN、Envoy、Istio 等相关领域。 本文 5574 字 阅读 14 分钟 前言 从单体到分…

三、数据链路层(二)封装成帧和透明传输

目录 2.1字符计数法 2.2字符填充的首尾定界符法 2.3零比特填充的首尾标志法 2.4违规编码法 组帧就是一段数据的前后分别添加首部和尾部&#xff0c;确定帧的界限。 组帧的目的是解决帧定界、帧同步&#xff08;接收方应能从接收到的二进制比特流中区分出帧的起始和终止&am…

java计算机毕业设计ssm智能交通信息管理平台6w258(附源码、数据库)

java计算机毕业设计ssm智能交通信息管理平台6w258&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#…

气象数据相关分析及使用系列:基于CALMET诊断模型的高时空分辨率精细化风场模拟

【查看原文】气象数据相关分析及使用系列&#xff1a;基于CALMET诊断模型的高时空分辨率精细化风场模拟技术应用​​​​​​ 在研究流场时&#xff0c;常用观测、模型风洞测试和数值模拟方法进行研究。但时常遇到研究区气象站点分布稀疏&#xff0c;不能代表周边复杂地形的风场…

PHP session相关知识详解

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是PHP session相关知识详解。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未…

JavaScript 版文章自动创建目录导航菜单控件源代码,用来生成文章导航,可生成独立的侧边栏导航菜单

特点 支持 UMD 规范&#xff1b;拥有 AnchorJS 基础功能&#xff1b;支持中文和英文标题文字生成ID&#xff1b;支持生成独立的侧边栏导航菜单&#xff1b;支持直接在文章中生成文章导读导航&#xff1b;自动分析标题关系&#xff0c;生成段落层级索引值&#xff1b;可以作为 …

试着开发一个Pagination组件

1 组件需求和模块设计 我们要实现的分页组件大致效果如下&#xff1a; 组件需求 点击左右分页按钮可以跳转到上一页/下一页&#xff1b;点击中间的页码按钮可以跳转到相应的页码&#xff1b;首页尾页需要始终显示出来&#xff08;如果只有1页则不显示尾页&#xff09;&#x…

数字孪生助力油气管道行业实现资产管理

随着数字孪生技术的发展日臻成熟&#xff0c;各个行业领域都在经历一场翻天覆地的变化。结合国内的油气管网系统建设现状&#xff0c;数字孪生技术对油气管道行业数智化建设必将有重大而深远的意义。 数字孪生助力油气管道行业实现资产管理 北京智汇云舟科技有限公司成立于201…

【发表案例】2/3区计算机视觉类SCI,3个月19天录用

2/3区计算机视觉类SCI 【期刊简介】IF:2.5-3.0&#xff0c;JCR2/3区&#xff0c;中科院4区 【检索情况】SCI 在检&#xff0c;正刊 【征稿领域】面向智能交通应用的物联网驱动计算机视觉技术 录用案例&#xff1a;3个月19天录用 2022.12.05 | Accepted 2022.11.17 | Edit…

全新的 React 组件设计理念 Headless UI

其实&#xff0c;最早接触 Headless UI 是在去年&#xff0c;碰巧看到了一个非常前沿且优秀的组件库 ---- Chakra UI&#xff0c;这个组件库本身就是 Headless UI 的实践者&#xff0c;同时也是 CSS-IN-JS 的集大成者。 我当时看过之后&#xff0c;就对该理念产生了很大的兴趣…

(2022最新)Xray、Rad两款工具的使用与联动

1、Xray的简介 xray 是一款功能强大的安全评估工具&#xff0c;由多名经验丰富的一线安全从业者呕心打造而成&#xff0c;主要特性有: 1、检测速度快。发包速度快; 漏洞检测算法效率高。 2、支持范围广。大至 OWASP Top 10 通用漏洞检测&#xff0c;小至各种 CMS 框架 POC&am…

ClickHouse Senior Course Ⅵ

序言 这里单独说明下分布式表引擎,不用分布式表引擎,感觉ClickHouse就没必要使用了cuiyaonan2000163.com 参考网址: 分布式引擎 | ClickHouse Docs 分布式表引擎的位置: 分布式引擎 分布式引擎本身不存储数据, 但可以在多个服务器上进行分布式查询。 读是自动并行的。读取…

内核动力之源——内存管理

目录 内存管理背后的故事 内存管理概述 常见内存分配策略 LwIP的宏配置及内存管理 见招拆招——动态内存堆 数据结构描述 函数实现 ​以不变应万变——动态内存池 数据结构描述 函数实现 使用C库管理内存策略 无论在哪种系统中&#xff0c;动态内存都是一个非常重要的…

12.5、后渗透测试--内网主机屏幕截图

攻击主机&#xff1a; Kali 192.168.11.106靶机&#xff1a;windows server 2008 r2 192.168.11.134前提&#xff1a;获得 meterpreter shell操作屏幕的几种方式&#xff1a;screenshotscreenshare加载espia模块&#xff0c;使用screengrab一、screenshot # 截图 meterprete…