Number of Boomerangs

来源:互联网 发布:seo基础教程 编辑:程序博客网 时间:2024/05/16 02:44

Number of Boomerangs

Given n points in the plane that are all pairwise distinct, a "boomerang" is a tuple of points (i, j, k) such that the distance between iand j equals the distance between i and k (the order of the tuple matters).

Find the number of boomerangs. You may assume that n will be at most 500 and coordinates of points are all in the range [-10000, 10000] (inclusive).

Example:

Input:[[0,0],[1,0],[2,0]]Output:2Explanation:The two boomerangs are [[1,0],[0,0],[2,0]] and [[1,0],[2,0],[0,0]]
解析:对每个点求到其他每个点的距离,并把距离放在一个hash中计数,若点i到某些点(k个)的距离相同,则以第i个点为中心点的tuple为k*(k-1)。

代码:

class Solution {public:    int numberOfBoomerangs(vector<pair<int, int>>& points) {         int N=points.size();        unordered_map<double,int> dist;        int ans=0;         for (int i=0; i<N; i++)         {             dist.clear();             for (int j=0; j<N; j++)             {                 dist[sqrt(pow(abs(points[i].first-points[j].first),2)+pow(abs(points[i].second-points[j].second),2))]++;             }                                       for(auto iter = dist.begin(); iter != dist.end(); iter++)             {                 ans+=((iter->second)*(iter->second-1));             }         }                        return ans;    }};




0 0
原创粉丝点击