zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    vue jsx 使用指南
    学习typescript(二)
    callback, promise, co/yield, async/await 大混战
    学习typescript(一)
    # bug 查找 (一) 快速记录 IE8 下三个问题
    ShiWangMeSDK Android版接口文档 0.2.0 版
    RbbitMQ基础知识
    SpringMVC集成rabbitMQ
    使用pinyin4j汉字转pinyin
    Maven依赖调解
  • 原文地址:https://www.cnblogs.com/immjc/p/7200264.html
Copyright © 2011-2022 走看看