我有一个问题:
我有一个n个数字的未排序数组,
我需要找到数组中出现超过10%的数字。
你能给我写一个时间复杂的伪代码吗
一个例子:
array A = {12,11,1,3,1,4,4,7,8,9,10}
答案是1,3。
答案 0 :(得分:0)
您可以使用哈希表(哈希表)来解决此问题。
迭代数组, 如果哈希表不包含您的元素(数字) 然后添加一个计数器设置为1 否则将计数器加1。 迭代您的哈希表,并保留计数器大于数组大小10%的每个条目。
时间复杂度是迭代数组(n)加上迭代哈希表(最坏的情况:n)的成本:O(n)= 2n
另一种解决方案是对数组进行排序,然后对每个元素进行迭代以对每个元素进行计数,如果计数超过10%,则保留该元素
时间复杂度是排序的成本(n log(n))加上迭代数组的成本(n):O(n)= n + n log(n)>