Leetcode.1971 寻找图中是否存在路径

news/2024/10/30 9:31:25/

题目链接

Leetcode.1971 寻找图中是否存在路径 easy

题目描述

有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0n - 1(包含 0n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] = [ui, vi]表示顶点 ui和顶点 vi之间的双向边。 每个顶点对由 最多一条 边连接,并且没有顶点存在与自身相连的边。

请你确定是否存在从顶点 source开始,到顶点 destination结束的 有效路径

给你数组 edges和整数 nsourcedestination,如果从 sourcedestination存在 有效路径 ,则返回 true,否则返回 false

示例 1:

在这里插入图片描述

输入:n = 3, edges = [[0,1],[1,2],[2,0]], source = 0, destination = 2
输出:true
解释:存在由顶点 0 到顶点 2 的路径:

  • 0 → 1 → 2
  • 0 → 2

示例 2:

在这里插入图片描述

输入:n = 6, edges = [[0,1],[0,2],[3,5],[5,4],[4,3]], source = 0, destination = 5
输出:false
解释:不存在由顶点 0 到顶点 5 的路径.

提示:

  • 1<=n<=2∗1051 <= n <= 2 * 10^51<=n<=2105
  • 0<=edges.length<=2∗1050 <= edges.length <= 2 * 10^50<=edges.length<=2105
  • edges[i].length==2edges[i].length == 2edges[i].length==2
  • 0<=ui,vi<=n−10 <= ui, vi <= n - 10<=ui,vi<=n1
  • ui≠viui \neq viui=vi
  • 0<=source,destination<=n−10 <= source, destination <= n - 10<=source,destination<=n1
  • 不存在重复边
  • 不存在指向顶点自身的边

解法:bfs

用一个 布尔数组vis记录访问过的结点,用 bfs 从源点 source开始访问,如果能访问到 destination就返回 true;否则返回 false

时间复杂度: O(n)O(n)O(n)

C++代码:


class Solution {
public:bool validPath(int n, vector<vector<int>>& edges, int source, int destination) {vector<bool> vis(n);vector<vector<int>> g(n);//建图for(auto &e:edges){int a = e[0] , b = e[1];g[a].push_back(b);g[b].push_back(a);}queue<int> q;q.push(source);vis[source] = true;while(!q.empty()){auto t = q.front();q.pop();//如果能访问到终点 返回 trueif(t == destination) return true;for(auto v:g[t]){if(vis[v]) continue;q.push(v);vis[v] = true;}}return false;}
};

http://www.ppmy.cn/news/42149.html

相关文章

Baumer工业相机堡盟工业相机如何通过BGAPISDK里的图像处理库进行图像转换(C++)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK进行图像转换&#xff08;C&#xff09;Baumer工业相机Baumer工业相机的SDK里图像格式转换的技术背景Baumer工业相机通过BGAPI SDK进行图像转换调用BGAPI SDK的图像转换库ImageProcessor调用BGAPI SDK建立图像调用BGAPI SDK转换图像…

ARM 编译器 Arm Compiler for Embedded 6 相关工具链简介

目录 1, Introduction to Arm Compiler 6 1.1 armclang 1.2 armasm 1.3 armlink 1.4 armar 1.5 fromelf 1.6 Arm C libraries 1.7 Arm C libraries 1,8 Application development &#xff0c;ARM程序开发流程 2&#xff0c;ARM 编译器 5和ARM 编译器 6的兼容性 3&…

JavaEE企业级应用开发教程——第十二章 Spring MVC数据绑定和相应(黑马程序员第二版)(SSM)

第十二章 Spring MVC数据绑定和相应 12.1 数据绑定 在 Spring MVC 中&#xff0c;当接收到客户端的请求时&#xff0c;会根据请求参数和请求头等信息&#xff0c;将参数以特定的方式转换并绑定到处理器的形参中&#xff0c;这个过程称为数据绑定。数据绑定的流程大致如下&…

PostgreSQL慢sql原因和优化方案

文章目录导致PostgreSQL运行缓慢的原因&#xff1a;1. 数据库服务器硬件不足&#xff0c;例如CPU、内存、磁盘I/O等。2. 数据库中存在大量的慢查询&#xff0c;需要优化查询语句或索引。3. 数据库中存在大量的并发连接&#xff0c;需要调整数据库连接池的大小。4. 数据库中存在…

nginx配置https正向代理

适用场景&#xff1a; 因网络访问权限限制&#xff0c;局域网内仅有1台电脑可以上外网&#xff1b;内网其他机器如果需要访问外网&#xff0c;需要通过该电脑进行代理访问。 本文分别介绍如何在windows&#xff0c;linux上如何配置nginx正向代理。 nginx配置https正向代理&am…

【Spark】RDD缓存机制

1. RDD缓存机制是什么&#xff1f; 把RDD的数据缓存起来&#xff0c;其他job可以从缓存中获取RDD数据而无需重复加工。 2. 如何对RDD进行缓存&#xff1f; 有两种方式&#xff0c;分别调用RDD的两个方法&#xff1a;persist 或 cache。 注意&#xff1a;调用这两个方法后并不…

OpenCV中图像操作的基础介绍

文章目录 目录 文章目录 前言 一、加载、显示、保存图像 示例代码&#xff1a; 二、调整图像大小 示例代码: 三、裁剪图像 示例代码&#xff1a; 四、反转图像 示例代码&#xff1a; 五、调整亮度和对比度 示例代码&#xff1a; 六、代码整合 七、其他常见操作 …

Redis数据迁移过程,使用jedis客户端,需要注意区分string和byte命令转换字符编码不一致的问题,使用不当会导致丢数据

1.了解String与byte之间存在的字符编码映射规则&#xff08;java为例&#xff09; string与byte来回转换&#xff0c;需要指定一样字符编码规则 详细原因请参考&#xff1a;关于Java中bytes到String的转换-阿里云开发者社区 简单来说 &#xff08;1&#xff09;string和by…