Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e3402a1

Browse files
add 1136
1 parent 9a36136 commit e3402a1

File tree

3 files changed

+115
-0
lines changed

3 files changed

+115
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ _If you like this project, please leave me a star._ ★
307307
|1146|[Snapshot Array](https://leetcode.com/problems/snapshot-array/)|[Javascript](./javascript/_1146.js)| | Easy ||
308308
|1138|[Alphabet Board Path](https://leetcode.com/problems/alphabet-board-path/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1138.java)| [:tv:](https://youtu.be/rk-aB4rEOyU)| Medium |HashTable, String|
309309
|1137|[N-th Tribonacci Number](https://leetcode.com/problems/n-th-tribonacci-number/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1137.java) | |Easy||
310+
|1136|[Parallel Courses](https://leetcode.com/problems/parallel-courses/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1136.java) | |Medium||
310311
|1134|[Armstrong Number](https://leetcode.com/problems/armstrong-number/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1134.java) | [:tv:](https://www.youtube.com/watch?v=HTL7fd4HPf4)|Easy||
311312
|1133|[Largest Unique Number](https://leetcode.com/problems/largest-unique-number/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1133.java) | [:tv:](https://youtu.be/Fecpt1YZlCs)|Easy||
312313
|1128|[Number of Equivalent Domino Pairs](https://leetcode.com/problems/number-of-equivalent-domino-pairs/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1128.java) | [:tv:](https://www.youtube.com/watch?v=7EpEEHAAxyw)|Easy||
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.fishercoder.solutions;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.HashSet;
6+
import java.util.LinkedList;
7+
import java.util.List;
8+
import java.util.Map;
9+
import java.util.Queue;
10+
import java.util.Set;
11+
12+
public class _1136 {
13+
public static class Solution1 {
14+
public int minimumSemesters(int n, int[][] relations) {
15+
Map<Integer, Set<Integer>> indegree = new HashMap<>();
16+
for (int[] rel : relations) {
17+
if (!indegree.containsKey(rel[1])) {
18+
indegree.put(rel[1], new HashSet<>());
19+
}
20+
Set<Integer> prereqs = indegree.get(rel[1]);
21+
prereqs.add(rel[0]);
22+
}
23+
Queue<Integer> queue = new LinkedList<>();
24+
Set<Integer> taken = new HashSet<>();
25+
for (int i = 1; i <= n; i++) {
26+
if (!indegree.containsKey(i)) {
27+
queue.offer(i);
28+
taken.add(i);
29+
}
30+
}
31+
int minSemesters = 0;
32+
while (!queue.isEmpty()) {
33+
int size = queue.size();
34+
minSemesters++;
35+
for (int i = 0; i < size; i++) {
36+
Integer curr = queue.poll();
37+
for (int key : indegree.keySet()) {
38+
Set<Integer> prereqs = indegree.get(key);
39+
if (prereqs.contains(curr)) {
40+
prereqs.remove(curr);
41+
if (prereqs.size() == 0) {
42+
queue.offer(key);
43+
taken.add(key);
44+
}
45+
}
46+
}
47+
}
48+
}
49+
return taken.size() != n ? -1 : minSemesters;
50+
}
51+
}
52+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.common.utils.CommonUtils;
4+
import com.fishercoder.solutions._1136;
5+
import org.junit.BeforeClass;
6+
import org.junit.Test;
7+
8+
import static org.junit.Assert.assertEquals;
9+
10+
public class _1136Test {
11+
private static _1136.Solution1 solution1;
12+
13+
@BeforeClass
14+
public static void setup() {
15+
solution1 = new _1136.Solution1();
16+
}
17+
18+
@Test
19+
public void test1() {
20+
assertEquals(2, solution1.minimumSemesters(3, CommonUtils.convertLeetCodeIrregularLengths2DArrayInputIntoJavaArray("[1,3],[2,3]")));
21+
}
22+
23+
@Test
24+
public void test2() {
25+
assertEquals(-1, solution1.minimumSemesters(3, CommonUtils.convertLeetCodeIrregularLengths2DArrayInputIntoJavaArray("[1,2],[2,3],[3,1]")));
26+
}
27+
28+
@Test
29+
public void test3() {
30+
assertEquals(25, solution1.minimumSemesters(25, CommonUtils.convertLeetCodeIrregularLengths2DArrayInputIntoJavaArray("" +
31+
"[5,10],[11,14],[21,22],[16,19],[21,25],[6,18],[1,9],[4,7]," +
32+
"[10,23],[5,14],[9,18],[18,21],[11,22],[1,15],[1,2],[5,18],[7,20],[2,23]," +
33+
"[12,13],[9,14],[10,16],[11,21],[5,12],[2,24],[8,17],[15,17],[10,13],[11,16]," +
34+
"[20,22],[7,11],[9,15],[16,22],[18,20],[19,22],[10,18],[3,20],[16,25],[10,15]," +
35+
"[1,23],[13,16],[23,25],[1,8],[4,10],[19,24],[11,20],[3,18],[6,25],[11,13]," +
36+
"[13,15],[22,24],[6,24],[17,20],[2,25],[15,24],[8,21],[14,16],[5,16],[19,23]," +
37+
"[1,5],[4,22],[19,20],[12,15],[16,18],[9,13],[13,22],[14,22],[2,8],[3,13]," +
38+
"[9,23],[14,15],[14,17],[8,20],[9,17],[3,19],[8,25],[2,12],[7,24],[19,25]," +
39+
"[1,13],[6,11],[14,21],[7,15],[3,14],[15,23],[10,17],[4,20],[6,14],[10,21]," +
40+
"[2,13],[3,21],[8,11],[5,21],[6,23],[17,25],[16,21],[12,22],[1,16]," +
41+
"[6,19],[7,25],[3,23],[11,25],[3,10],[6,7],[2,3],[5,25],[1,6],[4,17]," +
42+
"[2,16],[13,17],[17,22],[6,13],[5,6],[4,11],[4,23],[4,8],[12,23],[7,21]," +
43+
"[5,20],[3,24],[2,10],[13,14],[11,24],[1,3],[2,7],[7,23],[6,17],[5,17]," +
44+
"[16,17],[8,15],[8,23],[7,17],[14,18],[16,23],[23,24],[4,12],[17,19],[5,9]," +
45+
"[10,11],[5,23],[2,9],[1,19],[2,19],[12,20],[2,14],[11,12],[1,12],[13,23],[4,9]," +
46+
"[7,13],[15,20],[21,24],[8,18],[9,11],[8,19],[6,22],[16,20],[22,25],[20,21],[6,16]," +
47+
"[3,17],[1,22],[9,22],[20,24],[2,6],[9,16],[2,4],[2,20],[20,25],[9,10],[3,11],[15,18]," +
48+
"[1,20],[3,6],[8,14],[10,22],[12,21],[7,8],[8,16],[9,20],[3,8],[15,21],[17,21],[11,18]," +
49+
"[13,24],[17,24],[6,20],[4,15],[6,15],[3,22],[13,21],[2,22],[13,25],[9,12],[4,19],[1,24]," +
50+
"[12,19],[5,8],[1,7],[3,16],[3,5],[12,24],[3,12],[2,17],[18,22],[4,25],[8,24]," +
51+
"[15,19],[18,23],[1,4],[1,21],[10,24],[20,23],[4,14],[16,24],[10,20],[18,24]," +
52+
"[1,14],[12,14],[10,12],[4,16],[5,19],[4,5],[19,21],[15,25],[1,18],[2,21],[4,24]," +
53+
"[7,14],[4,6],[15,16],[3,7],[21,23],[1,17],[12,16],[13,18],[5,7],[9,19],[2,15],[22,23]," +
54+
"[7,19],[17,23],[8,22],[11,17],[7,16],[8,9],[6,21],[4,21],[4,13],[14,24],[3,4],[7,18]," +
55+
"[11,15],[5,11],[12,17],[6,9],[1,25],[12,18],[6,12],[8,10],[6,8],[11,23],[7,10],[14,25]," +
56+
"[14,23],[12,25],[5,24],[10,19],[3,25],[7,9],[8,12],[5,22],[24,25],[13,19],[3,15],[5,15]," +
57+
"[15,22],[10,14],[3,9],[13,20],[1,10],[9,21],[10,25],[9,24],[14,20],[9,25],[8,13],[7,12]," +
58+
"[5,13],[6,10],[2,5],[2,18],[14,19],[1,11],[7,22],[18,25],[11,19]," +
59+
"[18,19],[4,18],[17,18],[2,11]")));
60+
}
61+
62+
}

0 commit comments

Comments
 (0)