擅长:python、mysql、java
<p>已编辑。
将以O(n+m)运行。只是合并重叠的间隔。你知道吗</p>
<pre><code>#filter contains time intervals
#frequencies contains the elements
#example -> filter = [[1,50],[15,23],[16,40],[8,45],[14,56]]
start = -1
end = 10000000000
flag = True
l = list()
for i in range(len(filter)-1):
temp = filter[i]
temp1 = filter[i+1]
if temp[0] <= temp1[0] <= temp[1]:
start = max(start,temp[0])
end = min(end,temp1[1],temp[1])
elif temp1[0] <= temp[0] <= temp1[1]:
start = max(start,temp[0])
end = min(end,temp1[1],temp[1])
else:
flag = False
#print("cant be done")
break
if flag:
#print(start,end)
for i in frequencies:
if start <= i <= end:
l.append(i)
return l
</code></pre>