我手头有问题。只是想弄清楚是否有更好的解决方案。
假设我有一些键值对:
[
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/