From 788eae9377f41138e592c463996bba1ec236fc53 Mon Sep 17 00:00:00 2001 From: linlihong <747682928@qq.com> Date: Wed, 4 Sep 2024 15:32:10 +0800 Subject: [PATCH] =?UTF-8?q?2024/9/3=20Hot100=20graph=20=E6=8B=93=E6=89=91?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=20LeetCode=E4=B9=8B=E7=AC=AC100=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/hot100/graph/Num207.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/main/java/com/cool/hot100/graph/Num207.java diff --git a/src/main/java/com/cool/hot100/graph/Num207.java b/src/main/java/com/cool/hot100/graph/Num207.java new file mode 100644 index 0000000..e95d656 --- /dev/null +++ b/src/main/java/com/cool/hot100/graph/Num207.java @@ -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> 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 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 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; + } + } + } + +}