Leetcode力扣秋招刷题路-0802
从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结
802. 找到最终的安全状态
有一个有 n 个节点的有向图,节点按 0 到 n - 1 编号。图由一个 索引从 0 开始 的 2D 整数数组 graph表示, graph[i]是与节点 i 相邻的节点的整数数组,这意味着从节点 i 到 graph[i]中的每个节点都有一条边。
如果一个节点没有连出的有向边,则它是 终端节点 。如果没有出边,则节点为终端节点。如果从该节点开始的所有可能路径都通向 终端节点 ,则该节点为 安全节点 。
返回一个由图中所有 安全节点 组成的数组作为答案。答案数组中的元素应当按 升序 排列。
示例 1:

输入:graph = [[1,2],[2,3],[5],[0],[5],[],[]]
输出:[2,4,5,6]
解释:示意图如上。
节点 5 和节点 6 是终端节点,因为它们都没有出边。
从节点 2、4、5 和 6 开始的所有路径都指向节点 5 或 6 。
示例 2:
输入:graph = [[1,2,3,4],[1,2],[3,4],[0,4],[]]
输出:[4]
解释:
只有节点 4 是终端节点,从节点 4 开始的所有路径都通向节点 4 。
提示:
n == graph.length
1 <= n <= 1 0 4 10^4 104
0 <= graph[i].length <= n
0 <= graph[i][j] <= n - 1
graph[i] 按严格递增顺序排列。
图中可能包含自环。
图中边的数目在范围 [1, 4 ∗ 1 0 4 4 * 10^4 4∗104] 内。
解题思路
拓扑的解法中,所有出度为0的点是安全的,那么出到这些点的点也可以减去这条边,如果其剩下的出度为0,它也是安全的,以此类推。
搜索的时候可以标记节点的当前状态,如果他有出口,暂定为1,如果他的出口全部为安全的点,他们的和必然为0,就认定它也是安全的,否则它是不安全的。
代码
拓扑
class Solution {public List<Integer> eventualSafeNodes(int[][] graph) {int n = graph.length;int[] out = new int[n];Map<Integer, List<Integer>> edges = new HashMap<>();for(int i=0;i<n;i++)for(int j:graph[i]){List<Integer> cur = edges.getOrDefault(j, new ArrayList<>());cur.add(i);edges.put(j, cur);out[i]++;}Deque<Integer> queue = new LinkedList<>();for(int i=0;i<n;i++)if(out[i]==0)queue.add(i);List<Integer> ans = new ArrayList<>();while(queue.size()>0){int node = queue.pollFirst();ans.add(node);if(edges.containsKey(node))for(int nxt: edges.get(node)){out[nxt]--;if(out[nxt] == 0)queue.add(nxt);}}Collections.sort(ans);return ans;}
}
DFS
class Solution {int[][] graph_;int[] states;public List<Integer> eventualSafeNodes(int[][] graph) {int n = graph.length;// 每个点可能的状态: -1:点是未走过的, 0:点是安全的,1:点是走过的不确定安不安全,2:点是不安全的states = new int[n];Arrays.fill(states, -1);graph_ = graph;List<Integer> ans = new ArrayList<>();for(int i=0;i<n;i++)if(dfs(i)==0)ans.add(i);return ans;}public int dfs(int node){if(states[node] == -1){states[node] = 1;for(int nxt:graph_[node]){states[node] += dfs(nxt);if(states[node] > 1)break;}if(states[node] == 1)states[node] = 0;elsestates[node] = 2;}return states[node];}
}
DFS也可以使用纯boolean来标记
class Solution {int[][] graph_;Map<Integer,Boolean> states;public List<Integer> eventualSafeNodes(int[][] graph) {int n = graph.length;graph_ = graph;states = new HashMap<>();List<Integer> ans = new ArrayList<>();for(int i=0;i<n;i++){if(safe(i))ans.add(i);}return ans;}public boolean safe(int node){if(!states.containsKey(node)){states.put(node, false);boolean allTrue = true;for(int nxt: graph_[node])if(!safe(nxt)){allTrue = false;break;}states.put(node, allTrue);}return states.get(node);}
}
相关文章:
Leetcode力扣秋招刷题路-0802
从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 802. 找到最终的安全状态 有一个有 n 个节点的有向图,节点按 0 到 n - 1 编号。图由一个 索引从 0 开始 的 2D 整数数组 graph表示, graph[i]是与节点 i 相邻的节…...
编程中最难的就是命名?这几招教你快速上手
作者:陈立(勤仁) 你可不能像给狗狗取名字那样给类、方法、变量命名。仅仅因为它很可爱或者听上去不错。 在写代码的时候,你要经常想着,那个最终维护你代码的人可能将是一个有暴力倾向的疯子,并且他还知道你住在哪里。 01 为什么…...
NUXT规范及常见问题
props中不要使用Web环境才有的对象,服务端渲染的时候会失败 使用<Nuxt/>组件代替<router-view/>,使用<NuxtLink/>代替<router-link/>static目录下的资源是静态资源,不应该通过import或../static/img/logo.png等方式…...
2023年Q1天猫空调品牌销量排行榜
如今,空调的普及水平较高,空调行业进入存量换新为主的发展阶段。 根据鲸参谋数据分析平台的相关数据显示,2023年Q1在天猫平台上,空调的销量将近100万件,销售额将近30亿,同时,空调产品的产品均价…...
如何在比特币系统内创造人工生命
信息来源:coingeek.com 自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂…...
除了Figma,再给你介绍10款好用的协同设计软件
组织结构越来越复杂,团队中的每个人都有独特的技能、经验和专业知识。我们怎样才能让团队更好地合作?在这种情况下,协同设计应运而生。 UI的未来是协同设计!如果你想把握未来的设计趋势,不妨从使用高效的协同设计软件…...
信息安全复习五:数据加密标准(DES)
一、本章梗概 1.主要内容:分组密码、分组密码用到的关键技术和结构、对称密钥密码典型算法DES 2.思考问题: ①按照明文被处理的形式,DES属于标准的分组密码 ②根据密钥的使用数量,DES属于标准的对称密码 3.内容回顾: …...
Java ---包装类
(一)包装类概念 官方说法: Java是面向对象的语言,但是为了便于开发者的使用,Java中却沿用了C语言的基本数据类型,在进行基本的数据计算时,开发者可以直接使用基础类。但是当需要和Java其他对象…...
Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)
项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...
MSVC(Microsoft Visual C++) 中运行库的链接方式MD和MT的区别
问题描述 MSVC(Microsoft Visual C) 中运行库的链接方式MD和MT的区别 问题解答 在MSVC编译器中,运行库(Runtime Library)有两种链接方式:MD(Multithread-DLL)和MT(Multithread)。这两种链接方式的主要区…...
设计模式之解释器模式(C++)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、解释器模式是什么? 解释器模式是一种行为型的软件设计模式,定义了一个解释器,来解释给定语…...
基于MATLAB编程的粒子群算法优化BP神经网络风电功率预测,基于PSO-BP的风电功率预测
目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群算法改进优化BP神经网络的风电功率 matlab代码 代写下载链接:https://download.csdn.net/download/a…...
开心档之C++ 字符串
C 字符串 目录 C 字符串 C 风格字符串 实例 实例 C 中的 String 类 实例 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 …...
Java Collection源码分析(JDk corretto 11)
文章目录 Collection 系列源码分析 (JDK Amazon corretto 11)Collection接口Iterable接口 子接口 QueueQueue的子接口 Deque双端队列 子接口ListArrayList 实现类序列化与反序列化(后续解决)获取Calss对象的方式 主要有三种:Arrays工具类System类 LinkedList实现类t…...
13种权重的计算方法
权重计算方法有很多种,不同的方法有不同的特点和适用情况。AHP层次分析法和熵值法在权重计算中属于比较常用的方法。除此之外,还有一些与权重计算相关的方法,今天一文总结了13种与权重计算相关的方法,大家可以对比选择使用。 一、…...
Devops和Gitops区别
一. 什么是devops DevOps 是一种开发(Dev)和运维(Ops)之间协作和沟通的文化、流程和工具的实践方法。它强调迭代、快速交付和持续集成/持续交付,旨在加速软件交付的速度、质量和稳定性。 DevOps 的核心目标是通过自动…...
拿下多家车企定点!4D毫米波雷达「域」系统首发出道
从1R、2R、3R到整车360感知方案,毫米波雷达的前装市场需求量依然保持着快速增长的态势。 高工智能汽车研究院监测数据显示,2022年中国市场(不含进出口)前装标配搭载ADAS毫米波雷达(前向后向盲区)交付1795.…...
【FATE联邦学习】FATE联邦学习使用GPU、指定cuda下标
问题 FATE框架1.x支持GPU训练吗? 寻找 先看了官网,搜官网,发现还是有的。 打开第一个后,里面可以用training param指定各个client的训练GPU,但是好像都是在large language model的。 而在文档中搜寻到的gpu…...
英文数字表达
1基数词 0 nought;zero;O 1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine 10 ten 11 eleven 12 twelve 13 thirteen 14 fourteen 15 fifteen 16 sixteen 17 seventeen 18 eighteen 19 nineteen 20 twenty21 twenty-one 22 twenty-two 23 twenty-three 30 th…...
第11届蓝桥杯省赛真题剖析-2020年6月21日Scratch编程初中级组
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第125讲。 第11届蓝桥杯省赛,这是2020年6月21日举办的省赛Scratch考试真题,原定于2020年3月7日…...
MatterGen:AI驱动的无机材料生成革命,开启新材料发现新纪元
MatterGen:AI驱动的无机材料生成革命,开启新材料发现新纪元 【免费下载链接】mattergen Official implementation of MatterGen -- a generative model for inorganic materials design across the periodic table that can be fine-tuned to steer the …...
从SENet到KAN卷积:一文搞懂注意力机制如何从‘加权’进化到‘学习’(附演进路线图)
注意力机制的进化图谱:从SENet到KAN卷积的技术跃迁 在计算机视觉领域,注意力机制已成为提升模型性能的关键技术。本文将带您深入探索注意力机制从早期通道注意力到最新动态结构学习的完整演进历程,揭示这一技术如何从简单的特征重标定发展为能…...
解锁欧空局10米土地利用数据:从注册到实战应用全流程解析
1. 欧空局10米土地利用数据简介 第一次接触欧空局WorldCover平台的朋友可能会被这个10米分辨率的土地利用数据惊艳到。作为一个长期和遥感数据打交道的从业者,我可以很负责任地说,这个数据集在精度和实用性上确实很能打。简单来说,它把全球地…...
SecGPT-14B真实生成效果:漏洞成因解释、CVSS评分建议与PoC生成
SecGPT-14B真实生成效果:漏洞成因解释、CVSS评分建议与PoC生成 1. SecGPT-14B网络安全大模型简介 SecGPT是由云起无垠团队开发的开源大语言模型,专门针对网络安全领域优化。这个14B参数规模的模型采用vLLM框架部署,并通过Chainlit提供用户友…...
实战踩坑:在华为ENSP模拟器上配置OSPF NSSA区域,为什么外部路由没传出去?
华为ENSP模拟器中OSPF NSSA区域外部路由失效的深度排查指南 当你在华为ENSP模拟器中配置OSPF NSSA区域时,是否遇到过这样的困境:明明按照教程步骤操作,外部路由却像被黑洞吞噬一般无法传递到其他区域?本文将带你深入这个技术迷宫的…...
5. 大模型核心基础概念(三):模型量化、蒸馏、微调的核心逻辑(通俗解读)
001、开篇:为什么大模型需要“瘦身”与“调教”?——量化、蒸馏、微调的必要性 上周在产线调试一个端侧部署的视觉模型,设备跑着跑着就内存溢出了。同事盯着日志问我:“模型在服务器上明明跑得好好的,怎么一到嵌入式板子上就崩了?” 我看了眼那 2GB 的 RAM 和板载的 8GB …...
基于 LlamaFactory 与 LoRA 微调开源大模型:构建高效文本分类系统的实践指南
1. 为什么选择LlamaFactoryLoRA做文本分类? 最近在做一个政务工单分类项目时,我发现传统BERT模型遇到三个头疼问题:标注成本高(需要上万条数据)、领域迁移难(换个场景就失效)、小样本表现差&…...
Omni-Vision Sanctuary在嵌入式边缘设备上的轻量化部署思考
Omni-Vision Sanctuary在嵌入式边缘设备上的轻量化部署思考 1. 嵌入式视觉的挑战与机遇 在智能摄像头、工业质检设备、无人机等嵌入式场景中,视觉模型的部署一直面临特殊挑战。传统方案要么性能不足,要么功耗过高,难以平衡实时性与能效比。…...
NVIDIA Profile Inspector 终极指南:免费解锁显卡隐藏性能的完整教程
NVIDIA Profile Inspector 终极指南:免费解锁显卡隐藏性能的完整教程 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 想要让游戏画面更流畅、画质更清晰吗?NVIDIA Profile Inspe…...
5分钟部署阿里RexUniNLU:Web界面操作,无需编程基础
5分钟部署阿里RexUniNLU:Web界面操作,无需编程基础 1. 认识RexUniNLU:零样本理解的神器 想象一下,你刚接手一个新项目,老板丢给你一堆用户评论,要求你快速分析出大家对产品"屏幕"、"续航&…...
