https://leetcode-cn.com/problems/count-unhappy-friends/

思路:无聊的模拟题。
class Solution {
public:
int unhappyFriends(int n, vector<vector<int>>& preferences, vector<vector<int>>& pairs) {
vector<vector<int>> rank(n,vector<int>(n));
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
rank[i][preferences[i][j]]=j;
}
vector<bool> unHappy(n);
int m=n>>1;
for(int i=0;i<m;i++)
{
for(int j=i+1;j<m;j++)
{
for(int k=0;k<2;k++)
{
if(rank[pairs[i][0]][pairs[j][0]]<rank[pairs[i][0]][pairs[i][1]]&&rank[pairs[j][0]][pairs[i][0]]<rank[pairs[j][0]][pairs[j][1]])
unHappy[pairs[i][0]]=unHappy[pairs[j][0]]=1;
if(rank[pairs[i][0]][pairs[j][1]]<rank[pairs[i][0]][pairs[i][1]]&&rank[pairs[j][1]][pairs[i][0]]<rank[pairs[j][1]][pairs[j][0]])
unHappy[pairs[i][0]]=unHappy[pairs[j][1]]=1;
swap(pairs[i][0],pairs[i][1]);
swap(pairs[j][0],pairs[j][1]);
}
}
}
int ans=0;
for(int i=0;i<n;i++)
if(unHappy[i])
++ans;
return ans;
}
};

本文介绍了一种使用模拟方法解决LeetCode问题《Count Unhappy Friends》的思路,通过计算朋友们的偏好等级和配对关系来确定不开心的朋友数量。主要涉及了数组操作、嵌套循环和条件判断。
116

被折叠的 条评论
为什么被折叠?



