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

有网站模板如何预览精品网站建设公

有网站模板如何预览,精品网站建设公,搜索引擎的使用方法和技巧,广告页面模板网站Every day a Leetcode 题目来源:1971. 寻找图中是否存在路径 解法1:并查集 并查集介绍:并查集详解 代码: /** lc appleetcode.cn id1971 langcpp** [1971] 寻找图中是否存在路径*/// lc codestart class UnionFind {vector&…

Every day a Leetcode

题目来源:1971. 寻找图中是否存在路径

解法1:并查集

并查集介绍:并查集详解

代码:

/** @lc app=leetcode.cn id=1971 lang=cpp** [1971] 寻找图中是否存在路径*/// @lc code=start
class UnionFind
{vector<int> father, size;public:UnionFind(int n) : father(n), size(n, 1){// iota函数可以把数组初始化为 0 到 n-1iota(father.begin(), father.end(), 0);}int find(int x){if (x == father[x])return x;elsereturn find(father[x]);}void connect(int p, int q){int fa_p = find(p), fa_q = find(q);if (fa_p != fa_q)father[fa_p] = fa_q;}bool isConnected(int p, int q){return find(p) == find(q);}
};class Solution
{
public:bool validPath(int n, vector<vector<int>> &edges, int source, int destination){UnionFind uf(n);for (vector<int> &edge : edges)uf.connect(edge[0], edge[1]);return uf.isConnected(source, destination);}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n+m×α(m)),其中 n 是图中的顶点数,m 是图中边的数目,α 是反阿克曼函数。并查集的初始化需要 O(n) 的时间,然后遍历 m 条边并执行 m 次合并操作,最后对 source 和 destination 执行一次查询操作,查询与合并的单次操作时间复杂度是 O(α(m)),因此合并与查询的时间复杂度是 O(m×α(m)),总时间复杂度是 O(n+m×α(m))。

空间复杂度:O(n),其中 n 是图中的顶点数。并查集需要 O(n) 的空间。

解法2:深度优先搜索

首先从顶点 source 开始遍历并进行递归搜索。搜索时每次访问一个顶点 vertex 时,如果 vertex 等于 destination 则直接返回,否则将该顶点设为已访问,并递归访问与 vertex 相邻且未访问的顶点 next。如果通过 next 的路径可以访问到 destination,此时直接返回 true,当访问完所有的邻接节点仍然没有访问到 destination,此时返回 false。

代码:

class Solution
{
public:bool dfs(int source, int destination, vector<vector<int>> &adj, vector<bool> &visited){if (source == destination){return true;}visited[source] = true;for (int next : adj[source]){if (!visited[next] && dfs(next, destination, adj, visited)){return true;}}return false;}bool validPath(int n, vector<vector<int>> &edges, int source, int destination){vector<vector<int>> adj(n);for (auto &edge : edges){int x = edge[0], y = edge[1];adj[x].emplace_back(y);adj[y].emplace_back(x);}vector<bool> visited(n, false);return dfs(source, destination, adj, visited);}
};

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n+m),其中 n 表示图中顶点的数目,m 表示图中边的数目。

空间复杂度:O(n+m),其中 n 表示图中顶点的数目,m 表示图中边的数目。空间复杂度主要取决于邻接顶点列表、记录每个顶点访问状态的数组和递归调用栈,邻接顶点列表需要 O(m+n) 的存储空间,记录每个顶点访问状态的数组和递归调用栈分别需要 O(n) 的空间。

http://www.15wanjia.com/news/193584.html

相关文章:

  • 做网站怎么制作工作1年半胖40斤
  • 网站建设外包 排名网站制网站制作公司
  • 湖南企业网站营销设计如何做滴滴网站平台
  • 如果制作一个自己的网站制作ppt的网站
  • 佛山微网站开发哪家好wordpress 喜欢
  • 怎么自己做论坛网站网站建设发帖论坛社区
  • 桂林网站开发建设wordpress主题6
  • p2p网站建设方案书长沙网站制作哪里好
  • 网站建设年费wordpress项目部署
  • 企业网站开发需要多钱腾讯人安装wordpress
  • 做设计参考的网站网站开发培训收费
  • 现在ps做网站的尺寸太原网站建设质量推荐
  • vs2013如何做网站沧州搜索引擎优化
  • dedecms 建两个网站的问题推广工具
  • 网站建设工作的函网页微信版可以加入腾讯会议吗
  • 建立网站有什么要求seo积分优化
  • 网站设计与制作培训班淮北网络推广
  • 建设一个网站的费用企业文化经典句子
  • google appwordpress优化版4.7.4
  • 如何用群晖做自己的网站开公司如何做网站推广页面
  • 广州网站建设网站托管运营创建一个个人网站需要多少钱
  • 网站宣传文案范例那个网站可以做软件出售的
  • 商业网站建设预估收益百度电脑网页版
  • 长沙建网站设计公司创建网站平台
  • 网站怎么做网站收录wordpress 弹窗注册登录
  • 如何查询网站是不是asp做的2021中国十大软件公司排名
  • 大良建站公司行业现状织梦cms网站地图
  • 六安网站建设报价方案投资网站策划
  • 网站空间的建设psd免费素材网
  • 百度站长论坛万能引流软件