Skip to content

Commit 1b67377

Browse files
add 210
1 parent 570dda9 commit 1b67377

File tree

5 files changed

+96
-0
lines changed

5 files changed

+96
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ LeetCode
188188
|0207|[Course Schedule](https://leetcode.com/problems/course-schedule/) | c | [c++](./src/0207-Course-Schedule/0207.cpp) |[python](./src/0207-Course-Schedule/0207.py)|[go](./src/0207-Course-Schedule/0207.go)|[js](./src/0207-Course-Schedule/0207.js)|Medium|
189189
|0208|[Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/) | c | [c++](./src/0208-Implement-Trie-(Prefix-Tree)/0208.cpp) |[python](./src/0208-Implement-Trie-(Prefix-Tree)/0208.py)|||Easy|
190190
|0209|[Minimum Size Subarray Sum](https://leetcode.com/problems/minimum-size-subarray-sum/) | c | [c++](./src/0209-Minimum-Size-Subarray-Sum/0209.cpp) |[python](./src/0209-Minimum-Size-Subarray-Sum/0209.py)|||Medium|
191+
|0210|[Course Schedule II](https://leetcode.com/problems/course-schedule-ii/) | c | [c++](./src/0210-Course-Schedule-II/0210.cpp) |[python](./src/0210-Course-Schedule-II/0210.py)|[go](./src/0210-Course-Schedule-II/0210.go)|[js](./src/0210-Course-Schedule-II/0210.js)|Medium|
191192
|0211|[Add and Search Word - Data structure design](https://leetcode.com/problems/add-and-search-word-data-structure-design/) | c | [c++](./src/0211-Add-and-Search-Word-Data-structure-design/0211.cpp) |[python](./src/0211-Add-and-Search-Word-Data-structure-design/0211.py)|||Medium|
192193
|0213|[House Robber II](https://leetcode.com/problems/house-robber-ii/) | c | [c++](./src/0213-House-Robber-II/0213.cpp) |[python](./src/0213-House-Robber-II/0213.py)|||Medium|
193194
|0215|[Kth Largest Element in an Array](https://leetcode.com/problems/kth-largest-element-in-an-array/) | c | [c++](./src/0215-Kth-Largest-Element-in-an-Array/0215.cpp) |[python](./src/0215-Kth-Largest-Element-in-an-Array/0215.py)|||Medium|

src/0210-Course-Schedule-II/0210.cpp

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution
2+
{
3+
public:
4+
vector<int> findOrder(int n, vector<vector<int>>& prerequisites)
5+
{
6+
unordered_map<int, vector<int>> g;
7+
vector<int> d(n), vis(n), res;
8+
for (auto& it : prerequisites)
9+
{
10+
g[it[1]].push_back(it[0]);
11+
d[it[0]]++;
12+
}
13+
14+
queue<int> q;
15+
for (int i = 0; i < n; i++)
16+
{
17+
if (d[i] == 0)
18+
{
19+
q.push(i);
20+
vis[i] = 1;
21+
}
22+
}
23+
while (!q.empty())
24+
{
25+
auto cur = q.front(); q.pop();
26+
res.push_back(cur);
27+
n--;
28+
for (int i : g[cur])
29+
{
30+
d[i]--;
31+
if (!vis[i] and d[i] == 0)
32+
{
33+
vis[i] = 1;
34+
q.push(i);
35+
}
36+
}
37+
}
38+
return n == 0 ? res : vector<int>();
39+
}
40+
};

src/0210-Course-Schedule-II/0210.go

Whitespace-only changes.

src/0210-Course-Schedule-II/0210.js

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
var findOrder = function(n, prerequisites) {
2+
let g = new Map();
3+
let d = new Array(n), vis = new Array(n), res = [], q = [];
4+
d.fill(0); vis.fill(0);
5+
for (let it of prerequisites) {
6+
if (g.has(it[1]))
7+
g.get(it[1]).push(it[0]);
8+
else g.set(it[1], [it[0]]);
9+
d[it[0]]++;
10+
}
11+
12+
for (let i = 0; i < n; i++) {
13+
if (d[i] == 0) {
14+
q.push(i);
15+
vis[i] = 1;
16+
}
17+
}
18+
19+
while (q.length) {
20+
let cur = q.shift();
21+
res.push(cur);
22+
n--;
23+
for (let i of g.get(cur) || []) {
24+
d[i]--;
25+
if (!vis[i] && d[i] == 0) {
26+
vis[i] = 1;
27+
q.push(i);
28+
}
29+
}
30+
}
31+
return n == 0 ? res : [];
32+
};

src/0210-Course-Schedule-II/0210.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution:
2+
def findOrder(self, n: int, prerequisites: List[List[int]]) -> List[int]:
3+
g = collections.defaultdict(list)
4+
d, vis, q, res = [0] * n, [0] * n, [], []
5+
for i, j in prerequisites:
6+
g[j].append(i)
7+
d[i] += 1
8+
9+
for i in range(n):
10+
if d[i] == 0:
11+
q.append(i)
12+
vis[i] = 1
13+
14+
while q:
15+
cur = q.pop(0)
16+
res.append(cur)
17+
n -= 1
18+
for i in g[cur]:
19+
d[i] -= 1
20+
if not vis[i] and d[i] == 0:
21+
vis[i] = 1
22+
q.append(i)
23+
return res if n == 0 else []

0 commit comments

Comments
 (0)