我需要做一些事情。
有两行给出数字,它们的作用就像一对整数(a,b)。我必须找到a行的最大5个数字,然后从b行中选择最大的5个数字。例如:

1 4
5 2
3 3
7 5
6 6
2 9
3 1


在此示例中,我需要的对是(6,6),因为6(a)在a [i]数字的前5位中,而6(b)在这5对对的b部分中最大。
我当时正在考虑使用向量和自己定义的结构来执行此操作,还使用一些临时数组,但我不知道这样做是否正确,也许有更简单的方法可以执行此操作。

有任何想法吗 ?

编辑:我还需要该对的索引号(在5的情况下,即第五对)。

最佳答案

优先级队列保持对基于其对的第一个元素进行顺序评估将是合适的。您可以插入所有对,然后提取前5个。然后在该对列表上进行迭代,以查找每个对的第二个元素的最大值。

编辑

我应该说,仅当您可以接受O(n * lg n)数量级的运行时,这才是一个不错的解决方案

关于c++ - C++中特定数据结构的想法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2253484/

10-13 01:17