我有2个阵列a& b,长度相同n。
我想将a的每个元素与b的每个元素进行比较。 2个数组未排序。如何使用复杂度小于O(n ^ 2)的算法实现我的目标?像O(n)或O(nlogn)?
最终目标是从这些数组中找到一对数字,使它们的差异就是数组的长度。
答案 0 :(得分:1)
我认为这可以满足您的需求,并且与您的排序算法一样高效:
a1,a2
,其中包含a
减去元素和加上数组长度n
的元素。a1
和a2
并对结果进行排序,以获取a'
。b
以获取b'
。i=0, j=0
a'[i]!=b'[j]
时:
i<n and a'[i]<b'[j]
:i++
i==n
:返回&#34;未找到!&#34; j<n and b'[j]<a'[i]
:j++
j==n
:返回&#34;未找到!&#34; 答案 1 :(得分:0)
如果两个数组的大小相同,则启动循环并迭代两个数组的索引并使用比较运算符进行比较。
答案 2 :(得分:0)
您可以在合并排序O(nlogn)中使用,然后比较末尾的数组 2O(nlogn)+ O(n)