是否有一种方法来比较数组a与另一个数组B,其中B是xA + y在O(n^2)?



给定大小为n的数组A和另一个数组B。B由数组A和两个常量x和y组成,其中Bi = x * Ai + c (i =>0,1,2,…n-1)例如,如果A:{3,1,5,7}且x = 1, y =2,则B: {5,3,7,9}

问题:找出A (j+1), (j+2), ....的次数(n -1)>Bj for j E{0,1,…n-1}

使用上面的示例输入答:{3、1、5、7}B:{5、3、7、9}

答案应该是3,因为当j = 0时,A3>B0(7祝辞;5)当j = 1时,A2>B1 (5>3)和A3>B1(7祝辞;3)

因为只有3种可能的A j+1 ....N -1>Bj for j E{0,1,…n-1},输出将是3

是否有一种方法可以用低于O(n^2)的算法解决这个问题?谢谢!

当我们在A上迭代时,为什么不将B的元素插入到顺序统计树中,并查找我们在A中看到的每个元素,树中有多少是较低的?在每个A_i处,确保查找前树中除了B_(i-1)之外的所有元素。这并不能区分哪些b含有更高的A元素,但似乎这个问题只是在问总数。O(n log n)时间,O(n)额外空间

最新更新