File tree Expand file tree Collapse file tree 2 files changed +48
-0
lines changed
src/main/java/algorithm/leetcode Expand file tree Collapse file tree 2 files changed +48
-0
lines changed Original file line number Diff line number Diff line change 9494| 198 | 动态规划 | [ 打家劫舍] ( src/main/java/algorithm/leetcode/Solution198.java ) | 简单 |
9595| 200 | 深度优先搜索、广度优先搜索、并查集 | [ 岛屿的个数] ( src/main/java/algorithm/leetcode/Solution200.java ) | 中等 |
9696| 206 | 链表 | [ 反转链表] ( src/main/java/algorithm/leetcode/Solution206.java ) | 简单 |
97+ | 207 | 深度优先搜索、广度优先搜索、图、拓扑排序 | [ 课程表] ( src/main/java/algorithm/leetcode/Solution207.java ) | 中等 |
9798| 209 | 数组、双指针、二分查找 | [ 长度最小的子数组] ( src/main/java/algorithm/leetcode/Solution209.java ) | 中等 |
9899| 211 | 设计、字典数、回溯算法 | [ 添加与搜索单词 - 数据结构设计] ( src/main/java/algorithm/leetcode/Solution211.java ) | 中等 |
99100| 212 | 字典数、回溯算法 | [ 单词搜索 II] ( src/main/java/algorithm/leetcode/Solution212.java ) | 困难 |
Original file line number Diff line number Diff line change 1+ package algorithm .leetcode ;
2+
3+ import java .util .LinkedList ;
4+
5+ /**
6+ * @author: mayuan
7+ * @desc: 课程表
8+ * @date: 2019/03/13
9+ */
10+ public class Solution207 {
11+ public boolean canFinish (int numCourses , int [][] prerequisites ) {
12+ // matrix[i][j]=1 表示 第i门课是第j门课的先行课
13+ int [][] matrix = new int [numCourses ][numCourses ];
14+ // indegree[i] 表示第i个课程有几门先行课
15+ int [] indegree = new int [numCourses ];
16+
17+ for (int i = 0 ; i < prerequisites .length ; ++i ) {
18+ int ready = prerequisites [i ][0 ];
19+ int pre = prerequisites [i ][1 ];
20+ if (0 == matrix [pre ][ready ]) {
21+ ++indegree [ready ];
22+ }
23+ matrix [pre ][ready ] = 1 ;
24+ }
25+
26+ int count = 0 ;
27+ LinkedList <Integer > queue = new LinkedList <>();
28+ for (int i = 0 ; i < indegree .length ; ++i ) {
29+ if (0 == indegree [i ]) {
30+ queue .addLast (i );
31+ }
32+ }
33+
34+ while (!queue .isEmpty ()) {
35+ int course = queue .pollFirst ();
36+ ++count ;
37+ for (int i = 0 ; i < numCourses ; ++i ) {
38+ if (0 != matrix [course ][i ]) {
39+ if (--indegree [i ] == 0 ) {
40+ queue .addLast (i );
41+ }
42+ }
43+ }
44+ }
45+ return count == numCourses ;
46+ }
47+ }
You can’t perform that action at this time.
0 commit comments