【发布时间】:2018-10-14 22:12:53
【问题描述】:
我知道存在类似的问题here。我的问题也相同,我有 N 个间隔(有些可能重叠,有些甚至相同)。然后给出Q点查询,我需要告诉有多少区间包含这个点。
我尝试通过对端点数组进行排序然后按答案中提到的 +1、-1 技巧计算重叠间隔的数量来开发我的算法。但是在执行二进制搜索之后我应该做什么?因为前缀和数组的对应索引并不总是答案。
e.g.
Intervals are : [1,4] [5,7] [6,10] [7,13]
sorted end point array : [1,4,5,6,7,7,10,13]
+1/-1 array : [1,-1,1,1,1,-1,-1,-1]
prefix sum array : [1,0,1,2,3,2,1,0]
Query : 10
my algorithm gives 1 (corresponding prefix array)
but actual ans should be 2.
我应该如何修正我的算法?
【问题讨论】:
-
你可以有多少间隔?端点可以有多大?
-
@juvian N
-
为什么实际答案是 3?只有 [5, 7] 和 [6, 10] 包含 6
-
你是对的。但仍然检查 q=10 它给出 1 但应该给出 2。编辑问题
标签: arrays algorithm sorting intervals