我有一个长度为n的未排序数组。有没有办法找出O(n)中数组中是否有相等的元素?
你知道你可以在O(1)中读取数组..
答案 0 :(得分:1)
答案 1 :(得分:0)
考虑一个函数foo
,它将每个元素映射到一个唯一的整数,并且该整数集的范围从0
到n
。
然后你可以声明一个大小为arr
的布尔类型的数组n
。
然后遍历元素数组,在每个元素上调用foo
以生成索引i
。您检查arr[i]
以查看它是否已设置为true
。如果有,那么你就没有一套独特的元素。如果arr
没有该元素,请设置arr[i] = true
。
这是O(N),但在存储方面很昂贵。