problem
也就是回旋镖的数量问题,以一个点为端点,若存在n个相等的点,那么就有两种情况可以构成三元数组,abc和acb是不同,也就是排列问题,有n(n-1)个。那么遍历每个点存在的三元数组求和即为所求。
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++) { int a = points[i].first - points[j].first;// int b = points[i].second - points[j].second;// mymap[a*a+b*b]++; } for(auto it=mymap.begin(); it!=mymap.end(); it++) { res += it->second * (it->second- 1); } mymap.clear(); } return res; } };
re:
1. Leetcode_447. Number of Boomerangs;
end