是否可能比较O(n)中数组中的所有元素?

时间:2016-11-30 13:46:23

标签: arrays time find greedy

我有一个长度为n的未排序数组。有没有办法找出O(n)中数组中是否有相等的元素?

你知道你可以在O(1)中读取数组..

2 个答案:

答案 0 :(得分:1)

  • 创建一个空字典
  • 表示列表中的每个元素
    • 如果元素已经在字典中,则返回true
    • 否则将元素添加到词典
  • 如果到达列表末尾,则返回false

答案 1 :(得分:0)

考虑一个函数foo,它将每个元素映射到一个唯一的整数,并且该整数集的范围从0n

然后你可以声明一个大小为arr的布尔类型的数组n

然后遍历元素数组,在每个元素上调用foo以生成索引i。您检查arr[i]以查看它是否已设置为true。如果有,那么你就没有一套独特的元素。如果arr没有该元素,请设置arr[i] = true

这是O(N),但在存储方面很昂贵。