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
    }
}