algorithm - 从更大的集合中找到项目子集的最小值

标签 algorithm minimum

我手头有问题。只是想弄清楚是否有更好的解决方案。

假设我有一些键值对:

[
 1234 : 43,
 2134 : 12,
 6543 : 89,
 213 : 45
]

现在我想在随机子集中查询它们并想要最小关联值。
例如:输入:{1234, 2134, 213} -> 12
{6543, 213} -> 45 ...

我的一个解决方案是将初始数据存储在 map 中并迭代给定的输入并获得最小值。

有更好的方法吗?

最佳答案

将您的子集存储在 map 中会迫使您查找每个值以找到最小值。

您可以将您的子集存储在一个键数组中,按值排序,并在恒定时间内访问每个子集的最小值。

如果您首先对数据进行排序,并根据您决定如何构建子集,您可能会产生 n.log(n) 初始成本,加上构建子集的成本,注意维护有序的元素。

关于algorithm - 从更大的集合中找到项目子集的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48969645/

相关文章:

C 指针、最小值和最大值

c++ - 删除未使用或冗余的代码

php - 如何从数组中求和等于X数的数组中找到最佳子集

algorithm - 如何检测多段线(多角度线)上圆的碰撞?

python - Karger 在 python 2.7 中的最小切割实现没有给出正确的切割

javascript - 是否可以根据另一个表单的输入更改 HTML5 范围 slider 的最小值和最大值?

java - 数组中最小值的索引; "recursive"

algorithm - 寻找具有最小距离的唯一样本对

asp.net-mvc - DataAnnotations StringLength属性MVC-没有最大值

将序列中的重复分组的算法