LeetCode 447.回旋镖的数量

给定平面上 n 对 互不相同 的点 points ,其中 pointsi = xi, yi 。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的欧式距离和 i 和 k 之间的欧式距离相等(需要考虑元组的顺序)。

返回平面上所有回旋镖的数量。

示例 1:

输入:points = \[0,0,1,0,2,0]

输出:2

解释:两个回旋镖为 \[1,0,0,0,2,0] 和 \[1,0,2,0,0,0]

示例 2:

输入:points = \[1,1,2,2,3,3]

输出:2

示例 3:

输入:points = \[1,1]

输出:0

提示:

n == points.length

1 <= n <= 500

pointsi.length == 2

-104^44 <= xi, yi <= 104^44

所有点都 互不相同

遍历回旋镖的中点,然后看有多少个点到中点的距离相等:

cpp 复制代码
class Solution {
public:
    int numberOfBoomerangs(vector<vector<int>>& points) {
        unordered_map<int, int> cnt;

        int ans = 0;
        for (vector<int> &pointi : points) {
            cnt.clear();
            for (vector<int> &pointjk : points) {
                int distance = (pointi[0] - pointjk[0]) * (pointi[0] - pointjk[0]) + 
                               (pointi[1] - pointjk[1]) * (pointi[1] - pointjk[1]);
                if (cnt.find(distance) != cnt.end()) {
                    ans += cnt[distance];
                }

                ++cnt[distance];
            }
        }

        return ans * 2;
    }
};

如果有n个点,则此算法时间复杂度为O(n2^22),空间复杂度为O(n)。

相关推荐
Interview Aid1125 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余14 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
罗西的思考16 小时前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha601617 小时前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘17 小时前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天20 小时前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法
AI情绪识别开源20 小时前
检信 AI 智能推广平台(代号:JX-Promote)
人工智能·算法·erlang
老当益壮梁奶奶21 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
不会就选b21 小时前
算法日常・每日刷题--<BFS拓扑排序>4
算法
天真小巫21 小时前
2026.8.30总结
职场和发展