1828.统计一个圆中点的数目
链接:1828.统计一个圆中点的数目
难度:Medium
标签:几何、数组、数学
简介:请你返回一个数组 answer ,其中 answer[j]是第 j 个查询的答案。
题解 1 - cpp
- 编辑时间:2023-01-24
- 执行用时:92ms
- 内存消耗:15.8MB
- 编程语言:cpp
- 解法介绍:遍历。
class Solution {
public:
vector<int> countPoints(vector<vector<int>>& points, vector<vector<int>>& queries) {
auto d = [&](vector<int> &a, vector<int> &b) {
return pow(abs(a[0] - b[0]), 2) + pow(abs(a[1] - b[1]), 2);
};
vector<int> ans(queries.size(), 0);
for (int i = 0; i < queries.size(); i++) {
for (auto &p : points) {
if (d(p, queries[i]) <= pow(queries[i][2], 2)) ans[i]++;
}
}
return ans;
}
};
题解 2 - python
- 编辑时间:2023-01-24
- 执行用时:2832ms
- 内存消耗:15.2MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
def countPoints(self, points: List[List[int]], queries: List[List[int]]) -> List[int]:
ans = [0] * len(queries)
def d(a, b): return pow(abs(a[0] - b[0]), 2) + pow(abs(a[1] - b[1]), 2)
for i in range(0, len(queries)):
for p in points:
if d(p, queries[i]) <= pow(queries[i][2], 2):
ans[i] += 1
return ans
题解 3 - rust
- 编辑时间:2023-01-24
- 执行用时:20ms
- 内存消耗:2.2MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
pub fn count_points(points: Vec<Vec<i32>>, queries: Vec<Vec<i32>>) -> Vec<i32> {
let d =
|a: &Vec<i32>, b: &Vec<i32>| (a[0] - b[0]).abs().pow(2) + (a[1] - b[1]).abs().pow(2);
let mut ans = vec![0; queries.len()];
for i in 0..queries.len() {
for p in points.iter() {
if d(&queries[i], p) <= queries[i][2].pow(2) {
ans[i] += 1;
}
}
}
ans
}
}