鉴于我有一个距[A, B]
的间隔(其中A, B
是整数)和一个非重叠间隔的列表(C_i, D_i), i = 1..N
(可以保证[A, B]
包含(C_i, D_i), i = 1..N
),目标是从(C_i, D_i), i = 1..N
中减去 [A, B]
:
A, B = 1, 10
intervals = [2, 3], [5, 6]
...
result = [[1, 1], [4, 4], [7, 10]]
numpy
中是否有内置功能?还是我必须以蛮力行事?
答案 0 :(得分:0)
在numpy中我对此一无所知,但是您不必使用蛮力。由于(C_i,D_i)间隔是不重叠的,因此可以对其进行排序,并且一旦排序,就可以对其进行迭代:
def remove_intervals(A, B, intervals):
cur = A
result = []
for C, D in sorted(intervals):
if cur < C:
result.append([cur, C-1])
cur = D+1
if D < B:
result.append([cur, B])
return result
答案 1 :(得分:0)