• [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 iand 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]]
    

    给定一个坐标数组,计算在这组坐标中,某一点到另外任意两个点直接距离相等的组合。假设固定1个点,满足条件的点数为n,则总的组合数为n * (n - 1)。所以使用2层for循环遍历坐标数组,即固定一个点,计算所有与这个点距离相等的点的个数,用map记录符合条件的点的个数。然后将符合条件的点的组合数累加入结果中。

    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;
        }
    };
    // 283 ms
  • 相关阅读:
    python——多进程
    python—mariadb自动部署主从
    docker镜像的操作
    docker容器的操作
    docker——数据卷volume:文件共享
    数据库介绍
    数据库的基本配置与操作
    数据库的增删改
    ELK的搭建
    数据库的查——select的基本使用
  • 原文地址:https://www.cnblogs.com/immjc/p/7200264.html
Copyright © 2020-2023  润新知