代码:
- class Solution {
- List
> edges;
- boolean valid = true;
- int[] visited;
- int[] result;
- int index;
- public int[] findOrder(int numCourses, int[][] prerequisites) {
- edges = new ArrayList<>();
- for(int i=0;i
- edges.add(new ArrayList
()); - }
- visited = new int[numCourses];
- result = new int[numCourses];
- index = numCourses - 1;
-
- for(int[] prerequisite:prerequisites){
- edges.get(prerequisite[1]).add(prerequisite[0]);
- }
- for(int i=0;i
- if(visited[i]==0){
- dfs(i);
- }
- }
- if(!valid)return new int[0];
- return result;
- }
- public void dfs(int u){
- visited[u] = 1;
- for(int v:edges.get(u)){
- if(visited[v]==0){
- dfs(v);
- if(!valid)return;
- }else if(visited[v]==1){
- valid = false;
- return;
- }
- }
- visited[u] = 2;
- result[index--] = u;
-
- }
- }
-
相关阅读:
纵向分栏
2、k-means聚类算法sklearn与手动实现
C++ 捕获程序异常奔溃minidump
gunicorn
C++实现Wlan自动连接(wpa2 enterprise)
关于“找不到mfc140u.dll,无法继续执行代码”问题的分析处理方法
安卓常见设计模式7------适配器模式(Kotlin版)(RecycleView adapter 模板代码)
C++、操作系统、计算机网络等需要巩固的知识点(自用,更新中)
2022 IDEA 在包下再建立多个包的做法
vue3 日期延后一天
-
原文地址:https://blog.csdn.net/stacey777/article/details/133589424