algorithm - 寻找比暴力算法更好的算法

标签 algorithm

问题如下:给定一个包含人员姓名、高度和体重的数据流,对于每个员工 E,找到比 E 更高、体重更重的员工组。

显然,这可以在 O(n^2) 内进行暴力破解。这是你能做的最好的事情吗?如果可以做得更好,算法会是什么?

最佳答案

如果我们画一个点(height_i, weight_i)在每个员工的 2D 平面上 i ,员工i的查询就变成了2D正交范围查询,即在这个矩形height_i < height <= height_max内寻找点和weight_i < weight <= weight_max .

从 wiki[1] 中,您可以拥有一个时间复杂度的算法 O(n log log n + k)哪里k是输出的大小。

编辑:在最坏的情况下,k可以按 n^2 的顺序排列

1:https://en.wikipedia.org/wiki/Range_searching#Orthogonal_range_searching

关于algorithm - 寻找比暴力算法更好的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47936859/

相关文章:

python - 可以加快查找字符串邻域的代码吗?

algorithm - N皇后问题算法方法的比较

algorithm - strassen 的矩阵乘法在哪里有用?

algorithm - Boost Graph 最大流算法找出最小 S/T 切割上的弧

algorithm - Perl 在计算阶乘 N 的递归实现中在哪里保存中间结果?

java - 生成 n 的所有成分,不超过 k 个部分

c# - 随机选择设置位的有效方法

c - 在整数数组中找到最大的对和

javascript - 为什么以下程序会为某些输入返回不正确的 bool 值?

javascript - 重新排列彼此太近的点