[Leetcode] 447. Number of Boomerangs 解题报告
2017-11-10 17:11
302 查看
题目:
Given n points in the plane that are all pairwise distinct, a "boomerang" is a tuple of points
the distance between
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:
思路:
对于每个点,计算出来它和其它所有点的距离。对于每个距离,假设有m个点,则可以构成m * (m - 1)个Boomerangs,返回所有结果之和即可。思路挺简单。
代码:
class Solution {
public:
int numberOfBoomerangs(vector<pair<int, int>>& points) {
int ret = 0;
for(int i = 0; i < points.size(); ++i) {
unordered_map<long, int> hash;
for(int j = 0; j < points.size(); ++j) {
if(j == i) {
continue;
}
long dist = (points[i].first - points[j].first) * (points[i].first - points[j].first);
dist += (points[i].second - points[j].second) * (points[i].second - points[j].second);
++hash[dist];
}
for(auto val : hash) {
ret += val.second * (val.second - 1);
}
}
return ret;
}
};
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
jequals
the distance between
iand
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]]
思路:
对于每个点,计算出来它和其它所有点的距离。对于每个距离,假设有m个点,则可以构成m * (m - 1)个Boomerangs,返回所有结果之和即可。思路挺简单。
代码:
class Solution {
public:
int numberOfBoomerangs(vector<pair<int, int>>& points) {
int ret = 0;
for(int i = 0; i < points.size(); ++i) {
unordered_map<long, int> hash;
for(int j = 0; j < points.size(); ++j) {
if(j == i) {
continue;
}
long dist = (points[i].first - points[j].first) * (points[i].first - points[j].first);
dist += (points[i].second - points[j].second) * (points[i].second - points[j].second);
++hash[dist];
}
for(auto val : hash) {
ret += val.second * (val.second - 1);
}
}
return ret;
}
};
相关文章推荐
- Leetcode 447. Number of Boomerangs 等区间 解题报告
- [leetcode] 447. Number of Boomerangs 解题报告
- [LeetCode] 447. Number of Boomerangs 解题报告
- 【LeetCode】Number of Boomerangs 解题报告
- 【LeetCode】447.Number of Boomerangs(Easy)解题报告
- [Leetcode] 102. Binary Tree Level Order Traversal 解题报告
- 【LeetCode】Missing Number 解题报告
- Leetcode Implement strStr()解题报告
- [Leetcode] 491. Increasing Subsequences 解题报告
- 【LeetCode】54. Spiral Matrix 解题报告
- 【LeetCode】377. Combination Sum IV 解题报告
- LeetCode:Decode Ways 解题报告
- 【LeetCode】413.Arithmetic Slices(Medium)解题报告
- Leetcode Add Two Numbers解题报告
- LeetCode: Integer to Roman 解题报告
- 【LeetCode】784. Letter Case Permutation 解题报告
- [Leetcode] 103. Binary Tree Zigzag Level Order Traversal 解题报告
- 【LeetCode】Longest Palindromic Substring 解题报告
- Leetcode #38. Count and Say 数数报数 解题报告
- Leetcode 482. License Key Formatting 序列号格式 解题报告