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