Leetcode 447 Number of Boomerangs
又是一道查找表的题目,题目的思路是二重循环求每个点和其它点的距离,将距离作为map的key,如果距离相同则对value+1。
我们需要对每个点求出boomerangs,然后进行累加得到结果。
class Solution { public: int getDistance(pair<int, int> pa, pair<int, int> pb) { return (pa.first - pb.first) * (pa.first - pb.first) + (pa.second - pb.second) * (pa.second - pb.second); } int numberOfBoomerangs(vector<pair<int, int>>& points) { int res = 0; for(int i=0; i<points.size(); ++i) { unordered_map<int, int> hashmap; for (int j=0; j<points.size(); ++j) { if (i != j) { int distance = getDistance(points[i], points[j]); ++hashmap[distance]; } } unordered_map<int,int>::iterator it; it = hashmap.begin(); while (it != hashmap.end()) { int num = it->second; res += num * (num - 1); ++it; } } return res; } };

浙公网安备 33010602011771号