LeetCode-2608. 图中的最短环【广度优先搜索 图,腾讯面试真题】

news2024/10/9 6:46:42

LeetCode-2608. 图中的最短环【广度优先搜索 图,腾讯面试真题】

  • 题目描述:
  • 解题思路一:【一图秒懂】枚举起点跑 BFS
  • 解题思路二:背诵版
  • 解题思路三:

题目描述:

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

返回图中 最短 环的长度。如果不存在环,则返回 -1 。

环 是指以同一节点开始和结束,并且路径中的每条边仅使用一次。

示例 1:
在这里插入图片描述
输入:n = 7, edges = [[0,1],[1,2],[2,0],[3,4],[4,5],[5,6],[6,3]]
输出:3
解释:长度最小的循环是:0 -> 1 -> 2 -> 0

示例 2:
在这里插入图片描述
输入:n = 4, edges = [[0,1],[0,2]]
输出:-1
解释:图中不存在循环

提示:

2 <= n <= 1000
1 <= edges.length <= 1000
edges[i].length == 2
0 <= ui, vi < n
ui != vi
不存在重复的边

解题思路一:【一图秒懂】枚举起点跑 BFS

题解参考
在这里插入图片描述
问:为什么说发现一个已经入队的点,就说明有环?

答:这说明到同一个点有两条不同的路径,这两条路径组成了一个环。

class Solution:
    def findShortestCycle(self, n: int, edges: List[List[int]]) -> int:
        g = [[] for _ in range(n)]
        for x, y in edges:
            g[x].append(y)
            g[y].append(x) # 建图

        def bfs(start):
            ans = inf
            dis = [-1] * n # dis[i] 表示从start到i的最短路径长度
            dis[start] = 0
            q = deque([(start, -1)])
            while q:
                x, fa = q.popleft()
                for y in g[x]:
                    if dis[y] < 0: # 第一次遇到
                        dis[y] = dis[x] + 1
                        q.append((y, x))
                    elif y != fa: # 第二次遇到
                        ans = min(ans, dis[x] + dis[y] + 1)
            return ans
        ans = min(bfs(i) for i in range(n))
        return ans if ans < inf else -1

时间复杂度:O(nm)
空间复杂度:O(n+m)

解题思路二:背诵版

class Solution:
    def findShortestCycle(self, n: int, edges: List[List[int]]) -> int:
        g = [[] for _ in range(n)]
        for u, v in edges:
            g[u].append(v)
            g[v].append(u)

        def bfs(start):
            ans = inf
            dis = [-1] * n
            q = deque([(start, -1)])
            dis[start] = 0
            while q:
                x, fa = q.popleft()
                for y in g[x]:
                    if dis[y] < 0:
                        dis[y] = dis[x] + 1
                        q.append((y, x))
                    elif y != fa:
                        ans = min(ans, dis[x] + dis[y] + 1)
            return ans

        ans = min(bfs(i) for i in range(n))
        return ans if ans < inf else -1

时间复杂度:O(nm)
空间复杂度:O(n+m)

解题思路三:


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


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

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

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

相关文章

anndata复制问题

感觉这个问题就很复杂哈&#xff0c;摸不清什么规律&#xff0c;只能判断前后的维度变化了 example 1 import scanpy as sc adata1 sc.read(/Users/yxkang/Desktop/dataset/HER2/H5AD_file/ad_H1.h5ad) print(adata1)adata2 sc.read(/Users/yxkang/Desktop/dataset/HER2/H5…

【AI学习】Mamba学习(五):《HiPPO: Recurrent Memory with Optimal Polynomial Projections》

SSM之后&#xff0c;就需要接着学习HiPPO了。 《HiPPO: Recurrent Memory with Optimal Polynomial Projections》 论文地址&#xff1a;https://arxiv.org/abs/2008.07669 摘要 从连续数据中学习的一个核心问题是&#xff0c;随着更多数据的处理&#xff0c;以增量方式表示累…

OWASP发布大模型安全风险与应对策略(QA测试重点关注)

开放式 Web 应用程序安全项目&#xff08;OWASP&#xff09;发布了关于大模型应用的安全风险&#xff0c;这些风险不仅包括传统的沙盒逃逸、代码执行和鉴权不当等安全风险&#xff0c;还涉及提示注入、对话数据泄露和数据投毒等人工智能特有的安全风险。 帮助开发者和测试同学更…

面试不是一场遭遇战

引言 Ethan第一次跳槽时&#xff0c;把工作总结搞成简历&#xff0c;丢到BOSS&#xff0c;面了几场&#xff0c;结果都很糟。复盘下来&#xff0c;发现面试过程临场发挥太多&#xff0c;把攻坚战打成了遭遇战。 那面试要如何准备&#xff1f;什么情况下跳槽&#xff1f;有哪些大…

VSCode运行QT界面

VSCode用久了,感觉Qt Creator的写起代码来还是不如VSCode得心应手,虽然目前还是存在一些问题,先把目前实现的状况做个记录,后续有机会再进一步优化。 当前方式 通过QtCreator创建一个CMake项目,然后使用CMake的方式在VSCode中进行编译。 claude给出的建议 左上角的名字会…

springboot实战学习(11)(更新用户基本信息接口主逻辑)

接着继续学习。之前的博客的进度&#xff1a;完成用户模块的注册接口的开发以及注册时的参数合法性校验。在基本完成用户模块的登录接口的主逻辑的基础上&#xff0c;学习了"JWT令牌的组成与使用"、完成了"登录认证"&#xff08;生成与验证JWT令牌&#xf…

图示详解OpenEuler下 DNS安装、配置与测试

前言 DNS配置内容、步骤、参数较多&#xff0c;初学者很难短时间掌握&#xff0c;另外&#xff0c;理解DNS工作原理也有一定的难度&#xff0c;一次配置成功的概率不大&#xff0c;因此&#xff0c;建议在配置DNS之前&#xff0c;先读一下之前笔者的博文《详解DNS工作原理及实…

AutoDL服务器训练YOLOv8全过程

AutoDL服务器训练YOLOv8全过程 关于作者 作者&#xff1a;小白熊 作者简介&#xff1a;精通python、matlab、c#语言&#xff0c;擅长机器学习&#xff0c;深度学习&#xff0c;机器视觉&#xff0c;目标检测&#xff0c;图像分类&#xff0c;姿态识别&#xff0c;语义分割&…

TCP_SOCKET编程实现

文章目录 与UDP_SOCKET的区别第一代Tcp_ServerTcp_Client第二代Tcp_Server第三代Tcp_server多线程版本Tcp_Server线程池版的Tcp_Server使用inet_ntop来解决线程安全问题 业务逻辑编写总结补充说明&&业务代码完成ping的真实作用Translate编写Transform业务代码 整体总结…

基于Web的实时动作捕捉工具

随着Web技术的不断发展,实时动作捕捉已经成为可能。一款名为MiKaPo的基于Web的实时动作捕捉工具应运而生,它能够捕捉视频中的人物动作并将其应用到3D模型上。本文将详细介绍MiKaPo的核心功能、技术栈、工作原理以及其优势和应用场景。 1. 概述 MiKaPo是一款基于Web的实时动…

gaussdb hccdp认证模拟题(单选)

1.在GaussDB逻辑架构中&#xff0c;由以下选项中的哪一个组件来负责提供集群日常运维、配置管理的管理接口、工具&#xff1f;(1 分) A. CN B. DN C. GTM D. OM --D 2.在以下命令中&#xff0c;使用以下哪一个选项中的命令可以以自定义归档形式导出表t1的定义&#xf…

◇【论文_20181020 v6】广义优势估计器 (generalized advantage estimator, GAE)

https://arxiv.org/abs/1506.02438 ICLR 2016 加州伯克利 电子工程与计算机科学系 High-Dimensional Continuous Control Using Generalized Advantage Estimation 文章目录 摘要1 引言2 预备知识3 优势函数估计4 解释为 奖励设计reward shaping5 价值函数估计6 实验6.1 策略优…

计算机毕业设计-自主完成指南

计算机毕业设计通常都涉及到较为复杂的软件系统&#xff0c;许多同学在选定课题之后&#xff0c;往往处于一种懵懂的状态&#xff0c;不知道如何着手开展工作。现在&#xff0c;让我们转换一种视角&#xff0c;把毕设想象成自己逐步开发的一款产品。最终在答辩环节&#xff0c;…

0,Verilog基础专栏说明

给大家推荐一个好用的Verilog基础训练网站HDL Bits&#xff0c;专用于Verilog语言的练习&#xff0c;非常丰富并且包含仿真。 注&#xff1a;本专栏内容涉及到的Verilog相关题目均为HDL Bits网站上内容&#xff0c;解题代码均为原创。 1&#xff0c;章节分类 1&#xff0c;V…

Qt设计登录界面

优化登录框&#xff1a; 将两个按钮连接到槽函数 在构造函数中定义 connect(this->btn1,&QPushButton::clicked,this,&Logon::my_slot);connect(this->btn2,&QPushButton::clicked,this,&Logon::my_cancel); 定义登录按钮连接的槽函数 void Logon::my…

【物流配送中心选址问题】基于退火算法混合粒子群算法

课题名称&#xff1a; 基于退火算法混合粒子群算法的物流配送中心选址问题 改进方向&#xff1a;模拟退火算法优化粒子群算法 代码获取方式&#xff08;付费&#xff09;&#xff1a; 模型说明&#xff1a; 待补充 Matlab仿真结果&#xff1a; 1. 模型优化后的仿真结果 2…

【笔记】Day1的代码总结

代码中自定义接口AuthFilter的实现用了自定义类名称ManagerTokenGatewayFilterFactory继承抽象类抽象网关过滤器AbstractGatewayFilterFactory 用来实现AuthFilter接口的auth()方法 白名单路径&#xff1a;写在.yml文件中的sl.noAuthPath中

844.比较含退格的字符串

题目:844. 比较含退格的字符串 - 力扣&#xff08;LeetCode&#xff09; 思路:首先要知道这个#的意思是可以将前面一个数清空&#xff0c;(当时 我以为是将前面一串清空。。。看了半天)&#xff0c;由于 # 号只会消除左边的一个字符&#xff0c;所以对右边的字符无影响&#x…

超越GPT-4的视觉与文本理解能力,开源多模态模型领跑者 - Molmo

Molmo是由艾伦人工智能研究所&#xff08;Ai2&#xff09;发布的一系列多模态人工智能模型&#xff0c;旨在提高开放系统在性能上与专有系统&#xff08;如商业模型&#xff09;之间的竞争力。以下是对Molmo的详细总结&#xff1a; Molmo是什么&#xff1a; Molmo是基于Qwen2和…

分布式事务讲解 - 2PC、3PC、TCC

分布式事务讲解 - 2PC、3PC、TCC 前置知识 BASE理论&#xff1a; BASE是Basically Availbale(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)三个词语的缩写。BASE理论是对CAP理论中AP的一个扩展&#xff0c;通过牺牲强一致性来获得可用性&#xff0c;当…