我需要计算最大重叠出现的范围而不是它们的最大数量
I need to calculate the range of the max overlapping occurances not the max number of them
假设我有一个包含数字(开始、停止)的数据集:
4556745 , 4556749
4556749 , 5078554
……等等
我想编写一大段代码来打印出现最大重叠的范围(开始、停止)。
到目前为止,我已经设法计算出最大出现次数,但没有计算出它们所在的范围。
我的伪代码——逻辑是这样的:
maxoverlap = zero
currentoverlap = zero
i equals zero
j equals zero
m equals len(in_mumbers)
n equals len(out_numbers)
while (I less_than m and j less_than n):
if (in_numbers[i] less_than out_numbers[j])
currentoverlap equals currentoverlap + 1
maxoverlap equals max(maxoverlap, currentoverlap)
i equals i + 1
else:
currentoverlap equals currentoverlap - 1
j = j + 1
print maxoverlap
有什么想法,建议阅读e.t.c?
最大重叠范围可能(肯定是准)不是输入数据的整个元组(开始,停止)。
所以我会在包含开始和停止之间的所有范围的范围内转换你所有的元组(开始,停止):
(4556745, 4556749) → range(4556745, 4556749)
然后我将处理它们以计算每个数字的出现次数(例如在字典中)。
for range in ranges:
for number in range:
d.setdefault(num, 0)
d[num]+=1
然后你可以得到任何你想要的。要获得最大出现次数(你称之为 "maximum intersection")和相关的交叉点数,你可以使用类似 get keys by maximum value.
的东西
假设我有一个包含数字(开始、停止)的数据集:
4556745 , 4556749
4556749 , 5078554
……等等
我想编写一大段代码来打印出现最大重叠的范围(开始、停止)。 到目前为止,我已经设法计算出最大出现次数,但没有计算出它们所在的范围。
我的伪代码——逻辑是这样的:
maxoverlap = zero
currentoverlap = zero
i equals zero
j equals zero
m equals len(in_mumbers)
n equals len(out_numbers)
while (I less_than m and j less_than n):
if (in_numbers[i] less_than out_numbers[j])
currentoverlap equals currentoverlap + 1
maxoverlap equals max(maxoverlap, currentoverlap)
i equals i + 1
else:
currentoverlap equals currentoverlap - 1
j = j + 1
print maxoverlap
有什么想法,建议阅读e.t.c?
最大重叠范围可能(肯定是准)不是输入数据的整个元组(开始,停止)。
所以我会在包含开始和停止之间的所有范围的范围内转换你所有的元组(开始,停止):
(4556745, 4556749) → range(4556745, 4556749)
然后我将处理它们以计算每个数字的出现次数(例如在字典中)。
for range in ranges:
for number in range:
d.setdefault(num, 0)
d[num]+=1
然后你可以得到任何你想要的。要获得最大出现次数(你称之为 "maximum intersection")和相关的交叉点数,你可以使用类似 get keys by maximum value.
的东西