LC1557 可以到达所有点的最少点数目

2024-06-14 09:12

本文主要是介绍LC1557 可以到达所有点的最少点数目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这道题卡在如何选择方案。。。我想太复杂了,以下是我卡在如何选择方案的算法

class Solution {int N = 100010, M = N * 2, idx = 0, n;  int[] e = new int[M], ne = new int[M], h = new int[N];public void add(int a, int b) {e[idx] = b;ne[idx] = h[a];h[a] = idx ++;}List<Integer> ans;ArrayList<Integer>[] save;public List<Integer> findSmallestSetOfVertices(int n, List<List<Integer>> edges) {Arrays.fill(h, -1);this.n = n;for(List<Integer> e) {add(e[0], e[1]);}ans = new ArrayList<>();save = new ArrayList[n + 1];for(int i = 0;i < n;i ++) {save[i] = new ArrayList<>();find(i);}}public void find(int now) {ArrayDeque<Integer> aq = new ArrayDeque<>();aq.offer(now);boolean[] st = new int[n + 1];st[now] = true;save[now].add(now);while(!aq.isEmpty()) {int a = aq.poll();for(int i = h[a];i != -1;i = ne[i]) {int next = e[i];if(!st[next]) {st[next] = true;save[now].add(next);aq.offer(next);}}}}
}

如果做过这道题的人就会知道我原先想的有多复杂,那么其实可以不用这么复杂的。。。

这个可以到达所有点的最少点数目,换个思路,到达不了的点是不是就是必须出发的点,也就是入度为0的点。。。从这些入度为0的点出发,是不是一定会达到入度不为0的点,所以我们只要统计出来入度为0的点即可。

class Solution {public List<Integer> findSmallestSetOfVertices(int n, List<List<Integer>> edges) {Set<Integer> set = new HashSet<>();ArrayList<Integer> ans = new ArrayList<>();int m = edges.size();for(List<Integer> l : edges){set.add(l.get(1));}for(int i = 0; i < n; i++){if(!set.contains(i)) ans.add(i);}return ans;}
}

hhhhh,所以要多打题,才能发现这个就是入度问题

这篇关于LC1557 可以到达所有点的最少点数目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059985

相关文章

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

Collection的所有的方法演示

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class TestCollection {/*** @param args* Collection的所有的方法演示* 此程序没有使用泛型,所以可以添加任意类型* 以后如果写到泛型会补充这一方面的内容*/public s

Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测

关于饰品类产品合规问题宣导: 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规,其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性,欧盟REACH法规规定,珠宝首饰上架各大电商平台前必须进行RSLReport(欧盟禁限用化学物质检测报告)资质认证,以确保产品不含对人体有害的化学物质。 RSL-铅,

获取所有classpath指定包下类的所有子类

1.问题 开发过程中,有时需要找到所有classpath下,特定包下某个类的所有子类,如何做到? 2. 实现 比较常见的解决方案是自己遍历目录,查找所有.class文件。 下面这个方法使用spring工具类实现,简化过程,不再需要自己遍历目录 /*** 获取在指定包下某个class的所有非抽象子类** @param parentClass 父类* @param packagePat