447.迴旋鏢的數量
阿新 • • 發佈:2018-12-22
給定平面上 n 對不同的點,“迴旋鏢” 是由點表示的元組 (i, j, k)
,其中 i
和 j
之間的距離和 i
和 k
之間的距離相等(需要考慮元組的順序)。
找到所有迴旋鏢的數量。你可以假設 n 最大為 500,所有點的座標在閉區間 [-10000, 10000] 中。
示例:
輸入:[[0,0],[1,0],[2,0]] 輸出:2 解釋: 兩個迴旋鏢為 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]]
class Solution {
public:
int numberOfBoomerangs(vector<pair<int, int>>& points) {
int res = 0;
for (int i = 0; i < points.size(); ++i) {
unordered_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) {
res += it->second * (it->second - 1);
}
}
return res;
}
};