Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit c0cb11c

Browse files
committed
feat: update solutions to lc problems: No.0207,0210
* No.0207.Course Schedule * No.0210.Course Schedule II
1 parent 51c8aac commit c0cb11c

File tree

14 files changed

+434
-498
lines changed

14 files changed

+434
-498
lines changed

‎solution/0200-0299/0207.Course Schedule/README.md‎

Lines changed: 65 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,22 @@ class Solution:
6161
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
6262
edges = defaultdict(list)
6363
indegree = [0] * numCourses
64-
for i, j in prerequisites:
65-
edges[j].append(i)
66-
indegree[i] += 1
64+
for a, b in prerequisites:
65+
edges[b].append(a)
66+
indegree[a] += 1
6767
q = deque()
6868
for i in range(numCourses):
6969
if indegree[i] == 0:
7070
q.append(i)
71-
cnt = 0
71+
n = 0
7272
while q:
73-
i = q.popleft()
74-
cnt += 1
75-
for j in edges[i]:
76-
indegree[j] -= 1
77-
if indegree[j] == 0:
78-
q.append(j)
79-
return cnt == numCourses
73+
b = q.popleft()
74+
n += 1
75+
for a in edges[b]:
76+
indegree[a] -= 1
77+
if indegree[a] == 0:
78+
q.append(a)
79+
return n == numCourses
8080
```
8181

8282
### **Java**
@@ -92,27 +92,27 @@ class Solution {
9292
}
9393
int[] indegree = new int[numCourses];
9494
for (int[] p : prerequisites) {
95-
edges[p[1]].add(p[0]);
96-
++indegree[p[0]];
95+
int a = p[0], b = p[1];
96+
edges[b].add(a);
97+
++indegree[a];
9798
}
9899
Queue<Integer> q = new LinkedList<>();
99100
for (int i = 0; i < numCourses; ++i) {
100101
if (indegree[i] == 0) {
101102
q.offer(i);
102103
}
103104
}
104-
int cnt = 0;
105+
int n = 0;
105106
while (!q.isEmpty()) {
106-
int i = q.poll();
107-
++cnt;
108-
for (int j : edges[i]) {
109-
--indegree[j];
110-
if (indegree[j] == 0) {
111-
q.offer(j);
107+
int b = q.poll();
108+
++n;
109+
for (int a : edges[b]) {
110+
if (--indegree[a] == 0) {
111+
q.offer(a);
112112
}
113113
}
114114
}
115-
return cnt == numCourses;
115+
return n == numCourses;
116116
}
117117
}
118118
```
@@ -159,29 +159,27 @@ public:
159159
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
160160
vector<vector<int>> edges(numCourses);
161161
vector<int> indegree(numCourses);
162-
for (auto p : prerequisites)
162+
for (auto& p : prerequisites)
163163
{
164-
edges[p[1]].push_back(p[0]);
165-
++indegree[p[0]];
164+
int a = p[0], b = p[1];
165+
edges[b].push_back(a);
166+
++indegree[a];
166167
}
167168
queue<int> q;
168169
for (int i = 0; i < numCourses; ++i)
169-
{
170-
if (indegree[i] == 0) q.push(i);
171-
}
172-
int cnt = 0;
170+
if (indegree[i] == 0)
171+
q.push(i);
172+
int n = 0;
173173
while (!q.empty())
174174
{
175-
int i = q.front();
175+
int b = q.front();
176176
q.pop();
177-
++cnt;
178-
for (int j : edges[i])
179-
{
180-
--indegree[j];
181-
if (indegree[j] == 0) q.push(j);
182-
}
177+
++n;
178+
for (int a : edges[b])
179+
if (--indegree[a] == 0)
180+
q.push(a);
183181
}
184-
return cnt == numCourses;
182+
return n == numCourses;
185183
}
186184
};
187185
```
@@ -193,76 +191,66 @@ func canFinish(numCourses int, prerequisites [][]int) bool {
193191
edges := make([][]int, numCourses)
194192
indegree := make([]int, numCourses)
195193
for _, p := range prerequisites {
196-
edges[p[1]] = append(edges[p[1]], p[0])
197-
indegree[p[0]]++
194+
a, b := p[0], p[1]
195+
edges[b] = append(edges[b], a)
196+
indegree[a]++
198197
}
199198
var q []int
200199
for i := 0; i < numCourses; i++ {
201200
if indegree[i] == 0 {
202201
q = append(q, i)
203202
}
204203
}
205-
cnt := 0
204+
n := 0
206205
for len(q) > 0 {
207-
i := q[0]
206+
b := q[0]
208207
q = q[1:]
209-
cnt++
210-
for _, j := range edges[i] {
211-
indegree[j]--
212-
if indegree[j] == 0 {
213-
q = append(q, j)
208+
n++
209+
for _, a := range edges[b] {
210+
indegree[a]--
211+
if indegree[a] == 0 {
212+
q = append(q, a)
214213
}
215214
}
216215
}
217-
return cnt == numCourses
216+
return n == numCourses
218217
}
219218
```
220219

221220
### **C#**
222221

223222
```cs
224-
using System.Collections.Generic;
225-
226223
public class Solution {
227224
public bool CanFinish(int numCourses, int[][] prerequisites) {
225+
var edges = new List<int>[numCourses];
226+
for (int i = 0; i < numCourses; ++i)
227+
{
228+
edges[i] = new List<int>();
229+
}
228230
var indegree = new int[numCourses];
229-
var edgeCount = prerequisites.Length;
230-
var edge = new List<int>[numCourses];
231-
for (var i = 0; i < edgeCount; ++i)
231+
for (int i = 0; i < prerequisites.Length; ++i)
232232
{
233-
var child = prerequisites[i][0];
234-
var parent = prerequisites[i][1];
235-
if (edge[parent] == null)
236-
{
237-
edge[parent] = new List<int>();
238-
}
239-
edge[parent].Add(child);
240-
++indegree[child];
233+
int a = prerequisites[i][0];
234+
int b = prerequisites[i][1];
235+
edges[b].Add(a);
236+
++indegree[a];
241237
}
242-
243-
var queue = new Queue<int>();
244-
for (var i = 0; i < numCourses; ++i)
238+
var q = new Queue<int>();
239+
for (int i = 0; i < numCourses; ++i)
245240
{
246-
if (indegree[i] == 0) queue.Enqueue(i);
241+
if (indegree[i] == 0) q.Enqueue(i);
247242
}
248-
249-
var count = 0;
250-
while (queue.Count > 0)
243+
var n = 0;
244+
while (q.Count > 0)
251245
{
252-
varnode = queue.Dequeue();
253-
++count;
254-
if (edge[node] !=null)
246+
intb = q.Dequeue();
247+
++n;
248+
foreach (intainedges[b])
255249
{
256-
foreach (var next in edge[node])
257-
{
258-
if (--indegree[next] == 0)
259-
{
260-
queue.Enqueue(next);
261-
}
262-
}
250+
if (--indegree[a] == 0) q.Enqueue(a);
263251
}
264252
}
265-
return count == numCourses;
253+
return n == numCourses;
266254
}
267255
}
268256
```

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /