我有一个包含许多项目的集合。这些物品有一些属性但是在这种情况下,其中有2个是重要的; 可用和优先级。可用是一个简单的bool属性,而优先级可以是1到100之间的任何数字。我需要实现的是找到n个顺序的项目,其中所有项目都是可用的(== true)并具有相同的优先级。 我不仅限于使用该集合,这意味着我可以创建其他数据结构来加速查找过程(如显示项目状态的字节数组,如:101010001)。
如果我需要稍微想象一下:
1 [99],0 [80],1 [60],1 [60],0 [60]
1和0显示可用性,括号中的数字显示优先级。我需要找到第3和第4项。
实施此类算法的最快方法是什么?
注意:这当然不是一个家庭作业问题。
编辑:我无法更改商品的顺序,也不会从商品中删除部分商品。
答案 0 :(得分:0)
只需使用HashMap
即可将元素存储为true
。 HashMap的键将是优先级,值将是其出现次数。
最后打印出那些value > 1
。
因此,您可以在O(n)
时间复杂度中完成此操作,其中n是元素的总数。