我们有两个未排序的数组,每个数组的长度为n.这些数组包含0-n 100范围内的随机整数.如何找出这两个数组在O(n)/线性时间内是否有任何共同元素?不允许排序.
Nik*_*bak 11
Hashtable会救你.真的,它就像算法的瑞士刀.
只需将第一个数组中的所有值放入其中,然后检查第二个数组中是否存在任何值.
您尚未定义计算模型.假设你只能在O(1)时间内读取O(1)位(其他任何东西都是一个相当奇特的计算模型),就没有算法可以解决O(n)最坏情况时间复杂度的问题.
证明草图:输入中的每个数字都取O(log(n ^ 100))= O(100 log n)= O(log n)位.因此整个输入为O(n log n)位,在O(n)时间内无法读取.因此,任何O(n)算法都不能读取整个输入,因此如果这些位重要则不作出反应.
| 归档时间: |
|
| 查看次数: |
10024 次 |
| 最近记录: |