题目描述:
示例 1:
- 1 与 0 配对,但 1 与 3 的亲近程度比 1 与 0 高,且
- 3 与 1 的亲近程度比 3 与 2 高。
朋友 3 不开心,因为:
- 3 与 2 配对,但 3 与 1 的亲近程度比 3 与 2 高,且
- 1 与 3 的亲近程度比 1 与 0 高。
朋友 0 和 2 都是开心的。
示例 2:
示例 3:
思路分析:
import java.util.Set;
class Solution {
public int unhappyFriends(int n, int[][] preferences, int[][] pairs) {
boolean[][] arr = new boolean[n][n];
for (int[] pair : pairs) {
preProcess(arr, preferences, pair[0], pair[1]);
preProcess(arr, preferences, pair[1], pair[0]);
}
int result = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] && arr[j][i]) {
result++;
break;
}
}
}
return result;
}
private void preProcess(boolean[][] arr, int[][] preferences, int x, int y) {
for (int u : preferences[x]) {
if (u != y) {
arr[x][u] = true;
} else {
break;
}
}
}
}