Count Unhappy Friends LeetCode solution in Java

1
class Solution {
2
public int unhappyFriends(int n, int[][] preferences, int[][] pairs) {
3
int[][] rankings = new int[n][n]; // smaller the value, higher the preference
4
int[] pairedWith = new int[n];
5
for (int i = 0; i < n; i++) {
6
for (int rank = 0; rank < n - 1; rank++) {
7
int j = preferences[i][rank];
8
rankings[i][j] = rank; // person "i" views person "j" with rank
9
}
10
}
11
int unhappy = 0;
12
for (int[] pair : pairs) {
13
int a = pair[0], b = pair[1];
14
pairedWith[a] = b;
15
pairedWith[b] = a;
16
}
17
for (int a = 0; a < n; a++) {
18
// "a" prefers someone else
19
if (rankings[a][pairedWith[a]] != 0) {
20
for (int b = 0; b < n; b++) {
21
// "b" prefers to be with "a" over their current partner
22
// "a" prefers to be with "b" over their current partner
23
if (b != a
24
&& rankings[b][a] < rankings[b][pairedWith[b]]
25
&& rankings[a][b] < rankings[a][pairedWith[a]]) {
26
unhappy++;
27
break;
28
}
29
}
30
}
31
}
32
return unhappy;
33
}
34
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0