遍历每个i,把剩余点与i的距离做key放入map,value是具有相同距离的点的个数
#include <map>
#include <queue>
#include <set>
#include <algorithm>
using namespace std;
class Solution
{
public:
int numberOfBoomerangs(vector<pair<int, int>>& points)
{
int res = 0;
for(int i = 0; i < points.size(); i++)
{
map<int,int> mymap;
for(int j = 0; j<points.size(); j++)
{
if(j!=i)
mymap[dis(points[i],points[j])]++;
}
for(map<int,int>::iterator iter = mymap.begin(); iter != mymap.end(); iter++)
{
if(iter->second>=2)
res += (iter->second) * (iter->second - 1);
}
}
return res;
}
private:
int dis(pair<int,int> &x,pair<int,int> &y)
{
return (x.first-y.first)*(x.first-y.first)+(x.second-y.second)*(x.second-y.second);
}
};