2024/9/3 Hot100 graph 拓扑排序 LeetCode之第100题
This commit is contained in:
parent
d90f5da080
commit
788eae9377
|
@ -0,0 +1,51 @@
|
|||
package com.cool.hot100.graph;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
*
|
||||
* @Author: Cool
|
||||
* @Date: 2024/09/04/09:31
|
||||
* DayNumber 1
|
||||
* Hard 2
|
||||
* Level ?
|
||||
*/
|
||||
public class Num207 {
|
||||
List<List<Integer>> lists = new ArrayList<>();
|
||||
int[] status;
|
||||
boolean canFinis = true;
|
||||
|
||||
public boolean canFinish(int numCourses, int[][] prerequisites) {
|
||||
status = new int[numCourses];
|
||||
for (int i = 0; i < numCourses; i++) {
|
||||
lists.add(new ArrayList<>());
|
||||
}
|
||||
for (int[] prerequisite : prerequisites) {
|
||||
List<Integer> list = lists.get(prerequisite[0]);
|
||||
list.add(prerequisite[1]);
|
||||
}
|
||||
for (int[] prerequisite : prerequisites) {
|
||||
if (status[prerequisite[0]] == 0) {
|
||||
dfs(prerequisite[0]);
|
||||
}
|
||||
}
|
||||
return canFinis;
|
||||
}
|
||||
|
||||
private void dfs(int index) {
|
||||
|
||||
List<Integer> list = lists.get(index);
|
||||
for (Integer i : list) {
|
||||
if (status[i] == 0) {
|
||||
status[i] = 1;
|
||||
dfs(i);
|
||||
status[i] = 2;
|
||||
} else if (status[i] == 1) {
|
||||
canFinis = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue