# 1583. Count Unhappy Friends ###### tags: `Leetcode` `Medium` `Bloomberg` Link: https://leetcode.com/problems/count-unhappy-friends/ ## 思路 题目的意思有点不太好理解 参考中文版的一个解释,就是一对情侣A跟B出去玩,结果别人把A和D分到一起去了(D在A那里没有B重要),把B和C分到一起去了(C在B那里也没有A重要),所以A和B就会不开心 这里我的想法是对每一个人建一个set存他觉得比现在跟他组队的人更重要的人,后面check的时候,如果A把B放在set里面,B也把A放在自己的set里面,就说明他们两个都不开心 ## Code ```java= class Solution { public int unhappyFriends(int n, int[][] preferences, int[][] pairs) { int cnt = 0; int[] pair = new int[pairs.length*2]; for(int i = 0;i < pairs.length;i++){ pair[pairs[i][0]]=pairs[i][1]; pair[pairs[i][1]]=pairs[i][0]; } List<Set<Integer>> l = new ArrayList<>(); for(int i = 0;i < preferences.length;i++){ Set<Integer> preference = new HashSet<>(); int len = preferences[i].length; for(int j = 0;j < len;j++){ if(preferences[i][j] == pair[i]) break; preference.add(preferences[i][j]); } l.add(preference); } for(int i = 0;i < pairs.length;i++){ for(int friend:l.get(pairs[i][0])){ if(l.get(friend).contains(pairs[i][0])){ cnt++; break; } } for(int friend:l.get(pairs[i][1])){ if(l.get(friend).contains(pairs[i][1])){ cnt++; break; } } } return cnt; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up