Skip to content

Commit 42bd78b

Browse files
committed
course
1 parent 3c6d4c1 commit 42bd78b

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

Diff for: src/graph/course.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ def canFinish(numCourses, prerequisites):
2525
# 示例
2626
## [a , b] ,可以表示为 b -> a
2727
print(canFinish(2, [[1, 0]])) # 返回 True
28-
print(canFinish(2, [[1, 0], [0, 1]])) # 返回 False
28+
print(canFinish(2, [[1, 0], [0, 1]])) # 返回 False

Diff for: src/graph/course_v2.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from collections import deque
2+
from typing import List
3+
class Solution:
4+
# 使用 拓扑排序 验证一个图是否是 DAG
5+
_prev_indegree = []
6+
def canFinish( self , courseNums: int, arr: List[List[int]]) -> bool:
7+
## 设置入度数组
8+
indegree = [ 0 for _ in range(courseNums)]
9+
10+
if arr:
11+
for pair in arr:
12+
indegree[pair[0]] = indegree[pair[0]] + 1
13+
else:
14+
return True
15+
16+
result = self.is_zero(indegree)
17+
18+
if result:
19+
return True
20+
else:
21+
if self.is_not_changed(indegree):
22+
return False
23+
else:
24+
new_arr = []
25+
for pair in arr:
26+
if indegree[pair[1]] != 0:
27+
new_arr.append(pair)
28+
self._prev_indegree = indegree
29+
return self.canFinish(courseNums , new_arr)
30+
31+
def is_zero(self , indegree):
32+
return len(list(filter(lambda x : x == 0 , indegree))) == len(indegree)
33+
34+
def is_not_changed(self , indegree):
35+
if self._prev_indegree:
36+
return indegree == self._prev_indegree
37+
else:
38+
return False
39+
40+
# 示例
41+
## [a , b] ,可以表示为 b -> a
42+
# print(canFinish(2, [[1, 0]])) # 返回 True
43+
# print(Solution().canFinish(2, [[1, 0], [0, 1]])) # 返回 False
44+
# r = canFinish(6 , [[0,1],[0,2],[1,2],[2,0],[0,4],[3,5]])
45+
46+
# print(Solution().canFinish(20 , [[0,10],[3,18],[5,5],[6,11],[11,14],[13,1],[15,1],[17,4]]))

Diff for: src/slidingwindow/min_window.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ def min_window(s, t):
3838
return s[min_start:min_start+min_len]
3939

4040
# 测试
41-
s = "ADOBECODEBANC"
42-
t = "ABC"
41+
s = "a"
42+
t = "aa"
4343
print(min_window(s, t)) # 输出"BANC"

0 commit comments

Comments
 (0)