代码:
- 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;
-
- }
- }
-
相关阅读:
引擎入门 | Unity UI简介–第1部分(8)
分布式计算模型Mapreduce实践与原理剖析(一)
mybatis之动态SQL
SpringBoot学习(二)---基础配置
Shell命令管理进程
html实现图片裁剪处理(附源码)
ESP32上电到app_main()的过程梳理
01背包的变形-最后一块石头重量。
计算机毕业设计SSM钓鱼爱好者交流平台【附源码数据库】
数据库中间MyCat最新硬核教程,主从复制,分库分表
-
原文地址:https://blog.csdn.net/stacey777/article/details/133589424