LeetCode 1557. Minimum Number of Vertices to Reach All Nodes

原题链接在这里:https://leetcode.com/problems/minimum-number-of-vertices-to-reach-all-nodes/description/

题目:

Given a directed acyclic graph, with n vertices numbered from 0 to n-1, and an array edges where edges[i] = [fromi, toi] represents a directed edge from node fromi to node toi.

Find the smallest set of vertices from which all nodes in the graph are reachable. It's guaranteed that a unique solution exists.

Notice that you can return the vertices in any order.

Example 1:

Input: n = 6, edges = [[0,1],[0,2],[2,5],[3,4],[4,2]]
Output: [0,3]
Explanation: It's not possible to reach all the nodes from a single vertex. From 0 we can reach [0,1,2,5]. From 3 we can reach [3,4,2,5]. So we output [0,3].

Example 2:

Input: n = 5, edges = [[0,1],[2,1],[3,1],[1,4],[2,4]]
Output: [0,2,3]
Explanation: Notice that vertices 0, 3 and 2 are not reachable from any other node, so we must include them. Also any of these vertices can reach nodes 1 and 4.

Constraints:

  • 2 <= n <= 10^5
  • 1 <= edges.length <= min(10^5, n * (n - 1) / 2)
  • edges[i].length == 2
  • 0 <= fromi, toi < n
  • All pairs (fromi, toi) are distinct.

题解:

All the nodes with no indegree should be in the final result.

Because node with indegree, they can be reached by some other nodes. And nodes with no indegree can't be reached by any other nodes.

Time Complexity: O(n + e). e = edges.size().

Space: O(n).

AC Java:

复制代码
 1 class Solution {
 2     public List<Integer> findSmallestSetOfVertices(int n, List<List<Integer>> edges) {
 3         List<Integer> res = new ArrayList<>();
 4         int [] inDegree = new int[n];
 5         for(List<Integer> e : edges){
 6             inDegree[e.get(1)]++;
 7         }
 8 
 9         for(int i = 0; i < n; i++){
10             if(inDegree[i] == 0){
11                 res.add(i);
12             }
13         }
14 
15         return res;
16     }
17 }
复制代码

 

posted @   Dylan_Java_NYC  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2022-08-04 LeetCode 1400. Construct K Palindrome Strings
2022-08-04 LeetCode 1950. Maximum of Minimum Values in All Subarrays
2022-08-04 LeetCode 2187. Minimum Time to Complete Trips
2022-08-04 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
2019-08-04 LeetCode 841. Keys and Rooms
2019-08-04 LeetCode 1061. Lexicographically Smallest Equivalent String
2019-08-04 LeetCode 1102. Path With Maximum Minimum Value
点击右上角即可分享
微信分享提示