此题我答得甚low~
关键是想到距离矩阵,同一行上就是不同点到i点的距离,把距离相等的取一个2*C(n,2)即可
class Solution {
public:
int numberOfBoomerangs(vector<vector<int>>& points) {
if(points.size()<3) return 0;
int ans = 0;
double dis[points.size()][points.size()] = {0};
for(int i = 0;i<points.size();i++)
{
for(int j = 0;j<points.size();j++)
{
dis[i][j] = (points[i][0]-points[j][0])*(points[i][0]-points[j][0]) + (points[i][1]-points[j][1])*(points[i][1]-points[j][1]);
}
}
for(int i = 0;i<points.size();i++)
{
map<int,int>mp;
set<int>ss;
int num = 0;
for(int j = 0;j<points.size();j++)
{
if(!mp.count(dis[i][j]))
{
mp[dis[i][j]] = 1;
}
else
{
mp[dis[i][j]]++;
}
}
for(int j = 0;j<points.size();j++)
{
if(!ss.count(dis[i][j]) && mp[dis[i][j]]>1)
{
ans+= mp[dis[i][j]]*(mp[dis[i][j]]-1);
ss.insert(dis[i][j]);
}
}
}
return ans;
}
};