@@ -60,29 +60,29 @@ To take course 1 you should have finished course 0, and to take course 0 you sho
6060##Python
6161###Solution 1: Breadth-First Search
6262``` python
63+ from collectionsimport deque
64+
6365class Solution :
6466def canFinish (self ,num_courses :int ,prerequisites : List[List[int ]]) ->bool :
67+ courses_list= [set ()for _in range (num_courses)]# index: course, value: courses depend on course
6568 in_degrees= [0 ]* num_courses
66- courses_list= [set ()for _in range (num_courses)]# index: course, value: courses depending on course
67-
68- for prerequisitein prerequisites:
69- in_degrees[prerequisite[0 ]]+= 1
70- courses_list[prerequisite[1 ]].add(prerequisite[0 ])
7169
72- ok_courses= collections.deque()
70+ for course_item, coursein prerequisites:
71+ courses_list[course].add(course_item)
72+ in_degrees[course_item]+= 1
7373
74- for course, in_degree in enumerate (in_degrees):
75- if in_degree== 0 :
76- ok_courses.append(course )
74+ ok_course_queue = deque(
75+ [i for i, in_degree in enumerate (in_degrees) if in_degree== 0 ]
76+ )
7777
78- while ok_courses :
79- ok_course= ok_courses .popleft()
78+ while ok_course_queue :
79+ ok_course= ok_course_queue .popleft()
8080
8181for coursein courses_list[ok_course]:
8282 in_degrees[course]-= 1
83-
83+
8484if in_degrees[course]== 0 :
85- ok_courses .append(course)
85+ ok_course_queue .append(course)
8686
8787return sum (in_degrees)== 0
8888```
@@ -91,18 +91,14 @@ class Solution:
9191``` python
9292class Solution :
9393def canFinish (self ,num_courses :int ,prerequisites : List[List[int ]]) ->bool :
94+ courses_list= [set ()for _in range (num_courses)]# index: course, value: courses depend on course
9495 in_degrees= [0 ]* num_courses
95- courses_list= [set ()for _in range (num_courses)]# index: course, value: courses depending on course
9696
9797for prerequisitein prerequisites:
98- in_degrees[prerequisite[0 ]]+= 1
9998 courses_list[prerequisite[1 ]].add(prerequisite[0 ])
99+ in_degrees[prerequisite[0 ]]+= 1
100100
101- ok_courses= []
102-
103- for course, in_degreein enumerate (in_degrees):
104- if in_degree== 0 :
105- ok_courses.append(course)
101+ ok_courses= [ifor i, in_degreein enumerate (in_degrees)if in_degree== 0 ]
106102
107103while ok_courses:
108104 ok_course= ok_courses.pop()
@@ -122,7 +118,7 @@ class Solution:
122118class Solution {
123119public boolean canFinish (int numCourses ,int [][]prerequisites ) {
124120var inDegrees= new int [numCourses];
125- var coursesList= new ArrayList<HashSet<Integer > > ();// index: course, value: coursesdepending on course
121+ var coursesList= new ArrayList<HashSet<Integer > > ();// index: course, value: coursesdepend on course
126122for (var i= 0 ; i< numCourses; i++ ) {
127123 coursesList. add(new HashSet<Integer > ());
128124 }
@@ -166,7 +162,7 @@ class Solution {
166162class Solution {
167163public boolean canFinish (int numCourses ,int [][]prerequisites ) {
168164var inDegrees= new int [numCourses];
169- var coursesList= new ArrayList<HashSet<Integer > > ();// index: course, value: coursesdepending on course
165+ var coursesList= new ArrayList<HashSet<Integer > > ();// index: course, value: coursesdepend on course
170166for (var i= 0 ; i< numCourses; i++ ) {
171167 coursesList. add(new HashSet<Integer > ());
172168 }
@@ -212,7 +208,7 @@ class Solution {
212208public:
213209 bool canFinish(int num_courses, vector<vector<int >>& prerequisites) {
214210 auto in_degrees = vector<int >(num_courses);
215- auto courses_vector = vector<set<int >>(num_courses); // index: course, value: coursesdepending on course
211+ auto courses_vector = vector<set<int >>(num_courses); // index: course, value: coursesdepend on course
216212
217213 for (auto& prerequisite : prerequisites) {
218214 in_degrees[prerequisite[0]]++;
@@ -254,7 +250,7 @@ class Solution {
254250public:
255251 bool canFinish(int num_courses, vector<vector<int >>& prerequisites) {
256252 auto in_degrees = vector<int >(num_courses);
257- auto courses_vector = vector<set<int >>(num_courses); // index: course, value: coursesdepending on course
253+ auto courses_vector = vector<set<int >>(num_courses); // index: course, value: coursesdepend on course
258254
259255 for (auto& prerequisite : prerequisites) {
260256 in_degrees[prerequisite[0]]++;
@@ -302,7 +298,7 @@ public class Solution {
302298public bool CanFinish (int numCourses ,int [][]prerequisites )
303299 {
304300var inDegrees = new int [numCourses ];
305- var coursesList = new List <HashSet <int >>();// index: course, value: coursesdepending on course
301+ var coursesList = new List <HashSet <int >>();// index: course, value: coursesdepend on course
306302
307303for (int i = 0 ;i < numCourses ;i ++ )
308304coursesList .Add (new HashSet <int >());
@@ -353,7 +349,7 @@ public class Solution {
353349public bool CanFinish (int numCourses ,int [][]prerequisites )
354350 {
355351var inDegrees = new int [numCourses ];
356- var coursesList = new List <HashSet <int >>();// index: course, value: coursesdepending on course
352+ var coursesList = new List <HashSet <int >>();// index: course, value: coursesdepend on course
357353
358354for (int i = 0 ;i < numCourses ;i ++ )
359355coursesList .Add (new HashSet <int >());