首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组是否有唯一的元素?

数组是否有唯一的元素?
EN

Stack Overflow用户
提问于 2011-02-21 00:58:30
回答 4查看 1.3K关注 0票数 5

我正在寻找最有效的算法来检查数组中是否有唯一的元素。结果不需要是唯一的元素,只需相应的true或false即可。我知道我可以通过哈希表或诸如此类的东西达到O(n)效率,但我仍然在寻找一种在空间上更有效的结果。

e-数组未排序,包含整数。

EN

回答 4

Stack Overflow用户

发布于 2011-02-21 01:15:30

如果可能值的数量很小且事先已知,则可以使用位数组(在时间上是O(n),在空间上是O(n),并且比哈希表需要更少的空间)。

如果可能值的数量很大,并且您需要它是确定性的,那么您可以使用散列表(如果您有一个好的散列函数并且不需要增加散列表,则为O(n) )或就地对列表进行排序(排序时为O(n*lg(n),搜索第一个唯一元素时为O(n) )

如果可能值的数量很大,则不需要确定该值,如果希望查看某个特定元素是否在集合中,也可以使用Bloom Filter。Bloom Filter比hash map更节省空间,但存在误报的可能性(数据结构认为元素在集合中,而实际上不在集合中)

票数 1
EN

Stack Overflow用户

发布于 2011-02-21 01:06:16

我不确定O(n),但对于O(n^2),你可以将一个元素与其他元素进行异或运算

票数 0
EN

Stack Overflow用户

发布于 2011-02-21 01:11:26

在php中有一个函数array_keys()

代码语言:javascript
复制
array array_keys ( array $input [, mixed $search_value [, bool $strict = false ]] )

如果设置了可选参数$search_value,则函数将只返回查找到的值的键。如果返回的只有on数组键,则该值必须是唯一的。

我想我的答案有点具体(语言),我不知道这个函数的大-O。你必须自己测试它。:)

更新:我找到了描述array_keys()为O(n)的this article

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5058483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档