2024/9/3 Hot100 graph 拓扑排序 LeetCode之第100题

This commit is contained in:
linlihong 2024-09-04 15:32:10 +08:00
parent d90f5da080
commit 788eae9377
1 changed files with 51 additions and 0 deletions

View File

@ -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;
}
}
}
}