# leetCode-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 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]]

输入:
[[0,0],[1,0],[2,0]]

2

C++（Visual Studio 2017）：

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <map>
using namespace std;

class Solution {
public:
int numberOfBoomerangs(vector<pair<int, int>>& points) {
int result=0;
for (int i = 0; i < points.size(); i++) {
map<int, int> m;
for (int j = 0; j < points.size(); j++) {
int a = points[i].first - points[j].first;
int b = points[i].second - points[j].second;
m[a*a + b*b]++;
}
for (auto it = m.begin(); it != m.end(); it++) {
result += it->second * (it->second - 1);
}
}
return result;
}
};

int main()
{
Solution s;
vector<pair<int, int>> points = { {0,0},{1,0},{2,0} };
int result;
result = s.numberOfBoomerangs(points);
cout << result;
return 0;
}

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120