我们能否找到元素是不是存在于数组 1,2,...,n 中,其中元素 m 个不同的元素在 Θ(m) 中? [关闭]

Posted

技术标签:

【中文标题】我们能否找到元素是不是存在于数组 1,2,...,n 中,其中元素 m 个不同的元素在 Θ(m) 中? [关闭]【英文标题】:Can we find if element exists in an array 1,2,...,n with elements m different elements in Θ(m)? [closed]我们能否找到元素是否存在于数组 1,2,...,n 中,其中元素 m 个不同的元素在 Θ(m) 中? [关闭] 【发布时间】:2015-03-01 15:15:22 【问题描述】:

假设我们有一个数组 A[1...n],并且这个数组有 m 个不同的键。n→∞ 的复杂度是否有可能变成Θ(m)?这意味着如果m = constant 那么Θ(1)

【问题讨论】:

@amit 数组未排序。但我不知道我是否可以将其用作假设, 我想你可能会在 Theoretical Computer Science 网站上得到更多关于这个问题的回答,因为它不涉及编码问题。 取决于数组的存储方式。或者,换一种说法,如果问题是“是否有一个大小为 O(n+m) 的数据结构可以存储 n 范围内的有序值 1..m,并且可以在 O(1 ) 查询“对象 i 的值是多少?”和“是否存在值为 j 的对象?”,那么答案是肯定的。 【参考方案1】:

不,你不能。 此外,即使m=2O(1) 中找不到,因为这意味着您可以通过创建一个函数在O(1) 中的无限制数组(所有值都可能)中找到值x

f(i) = 1         arr[i] = x
       0         otherwise

并搜索是否有值i 等于f(i) = 1。 由于您无法在数组中找到O(1) 中的元素,因此在此了解最多m 不同元素对您没有帮助。

对于任何常量m>2 来说,上述情况显然是正确的。

【讨论】:

以上是关于我们能否找到元素是不是存在于数组 1,2,...,n 中,其中元素 m 个不同的元素在 Θ(m) 中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C语言:在十个元素的数组中,判断某数是不是存在。

js判断一个值是不是存在于一个js数组中

如何使用matlab获知某个字符是不是存在于一个字符集合内?

js判断一个值是不是存在于一个js数组中

为啥让 .indexOf() 返回为 -1,尽管元素存在于数组中? [关闭]

我们可以使用位操作找到0是不是在数组中出现奇数次