首页 > 学院 > 开发设计 > 正文

LEETCODE--Number of Boomerangs

2019-11-11 04:57:17
字体:
来源:转载
供稿:网友

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 i and 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: 2

Explanation: The two boomerangs are [[1,0],[0,0],[2,0]] and [[1,0],[2,0],[0,0]]

熟悉使用map

class Solution {public: int numberOfBoomerangs(vector<pair<int, int>>& points) { int num = 0; for(int i = 0; i < points.size(); i++){ map<long,int> group; for(int j = 0; j < points.size(); j++){ if(i == j) continue; int distance_x = points[j].first - points[i].first; int distance_y = points[j].second - points[i].second; int key = distance_x * distance_x + distance_y * distance_y; ++group[key]; } for(auto& p : group){ int val = p.second; if(val > 1) num += val * (val - 1); } } return num; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表