我有两个数组,一个排序数组int b[]
和其他未排序数组。有序数组由部分或全部未排序数组构成。现在有M个查询。对于每个查询值l和和r给出。在每个查询中,我需要找到存在于b[]
中的a[n]
元素的数量。C++:最快的方法来找到另一个阵列中的一个阵列的元素数
对于如 -
N=5 ,M=2
a= [2 5 1 2 3]
b=[3 2 1]
for each m:
l=1 r=5 ->a[1]=1, a[5]=5 -> answer should be 3 as all elements of b i.e 1,2,3 are present in a
l=2 r=4 ->a[2]=5 , a[4]=2 ->answer should be 2 as only 1 and 2 are there in b for given value of l and r for array.
如何找到不超过Ø(M * LOGN)时间复杂度的答案吗?
注意: 数组不是必需的。也可以使用Vector,这有助于减少时间复杂性或更易于实现代码。
这听起来很像_homework_。对?不幸的是,SO不是代码写入服务。你到现在为止尝试了什么?你的代码面临的实际问题是什么? – skypjack
@skypjack对不起,这不是一个家庭作业。这是使用DP解决问题的一部分。现在计算我在问题中需要计算的最终答案。那么我试图使用嵌套for循环,但时间限制超过。 –
不能从头顶上想出很多..但.. ..是数组中唯一的元素吗?你可以弹出找到的数组成员,避免稍后迭代它们,内循环应该在已排序的数组上以利用分支预测? – Swift