给定两个范围,找到第一个范围中的每个元素,元素的数量大于第二个范围中的元素数量

时间:2017-02-18 08:40:43

标签: arrays algorithm permutation inversion

给定的数组是前n个整数的排列。给出两个范围[l1,r1]& [l2,r2]。我们必须找到第一个范围内的每个元素a [i];第二个范围中的元素数量大于该数量。 (两个范围的长度相等)

我首先对两个范围进行了排序。然后迭代第一个范围中的每个元素,计算大于第二个范围内元素的数量。保留前一个计数的帐户。所以我的迭代只是O(l)[l =每个范围的长度] < / p>

我的总体时间复杂度为O(l * log(l))..但由于我是针对范围的许多查询计算的,因此花费了很多时间。

我认为这个问题类似于计算数组中的反转次数。但由于涉及两个范围和许多查询,我无法解决这个问题。我不确定,但我认为一些fenwick树结构可以提供一些帮助。可以有人提出一些重要建议。

0 个答案:

没有答案