代码:
- 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;
-
- }
- }
-
相关阅读:
抖音短视频实操:抖音热门视频的分类特点,如何选择视频内容并创作(下)
Java中的锁
数学建模——>LINGO基础
【低代码】角色和权限的解决方案
css 渐变色进度条
k8s基础概论总结&原理
【菜鸡学艺--Vue2--002】[基础指令&[条件与循环]
平方根计算在加速度传感器中的应用
MyBatis Binding
龙芯loongarch64服务器安装Rustup,解决“error: can‘t find Rust compiler”
-
原文地址:https://blog.csdn.net/stacey777/article/details/133589424