-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy path1733. Minimum Number of People to Teach.java
More file actions
51 lines (42 loc) · 1.55 KB
/
1733. Minimum Number of People to Teach.java
File metadata and controls
51 lines (42 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.*;
class Solution {
public int minimumTeachings(int totalLanguages, int[][] userLanguages, int[][] friendships) {
Set<Integer> usersToTeach = new HashSet<>();
// Step 1: Find users who cannot communicate
for (int[] friendship : friendships) {
int u1 = friendship[0] - 1;
int u2 = friendship[1] - 1;
boolean canCommunicate = false;
for (int lang1 : userLanguages[u1]) {
for (int lang2 : userLanguages[u2]) {
if (lang1 == lang2) {
canCommunicate = true;
break;
}
}
if (canCommunicate) break;
}
if (!canCommunicate) {
usersToTeach.add(u1);
usersToTeach.add(u2);
}
}
int minUsersToTeach = userLanguages.length + 1;
// Step 2: Try each language
for (int lang = 1; lang <= totalLanguages; lang++) {
int count = 0;
for (int user : usersToTeach) {
boolean knows = false;
for (int l : userLanguages[user]) {
if (l == lang) {
knows = true;
break;
}
}
if (!knows) count++;
}
minUsersToTeach = Math.min(minUsersToTeach, count);
}
return minUsersToTeach;
}
}