Number of Boomerangs
Input:
[[0,0],[1,0],[2,0]]
Output:
2The two boomerangs are [[1,0],[0,0],[2,0]] and [[1,0],[2,0],[0,0]]Basic Idea:
class Solution { int getDist(const pair<int, int>& p1, const pair<int, int>& p2) { return pow(p1.first - p2.first, 2) + pow(p1.second - p2.second, 2); } public: int numberOfBoomerangs(vector<pair<int, int>>& points) { int ret = 0; for (auto& p1 : points) { unordered_map<int, int> dists; for (auto& p2 : points) { int dist = getDist(p1, p2); ++dists[dist]; } for (auto pair : dists) { ret += pair.second * (pair.second - 1); } } return ret; } };