【发布时间】:2017-11-06 16:45:00
【问题描述】:
给定一个大小为n 的正整数数组,它期望找出两个范围是否在查询相等时给出。如果范围 1 中存在的所有元素都存在于范围 2 中并且计数相同,则认为两个范围相等。
例子:
1 2 5 3 5 1 2
查询:
[1,3] and [5,7]
[2,4] and [3,5]
答案:
Yes
No
可以通过以下方式提出一个简单的解决方案:
1. 对于每个查询,制作存储每个范围 O(n) 的数组的两个副本。
2. 然后对它们中的每一个进行排序。 O(n*logn)
3. 然后逐个元素比较,返回true或false。 O(n)
所以解决方案的复杂度是O(q*n*logn),其中q 是查询的数量。是否有可能有效地解决这个问题?
PS:所有变量n、q和数组元素的约束为<=10^5。
【问题讨论】:
-
有空间限制吗?您总是可以用时间换取空间。
-
@biziclop ...您可以安全地占用
50MB的空间。
标签: algorithm performance time