查找具有最大并发进程数的时间间隔

时间:2016-06-08 21:35:34

标签: java algorithm data-structures

系统以格式生成日志:startTime,endTime,Request。 如何计算最大并发请求数的时间间隔? 我尝试使用带有时间戳的hashmap作为键请求计数作为值。使用每个请求和更新计数器的开始和时间之间的所有值填充键,但如果时间戳精确到毫秒,则需要很大的空间。

1 个答案:

答案 0 :(得分:2)

将列表转换为具有属性ts,value

的事件

startTime:123456,endTime:23456,请求:....成为两个事件:

(123456,1) (23456,-1)

您现在的请求数量是事件的2倍。

如果按时间戳对这些事件进行排序,您可以迭代它们添加和减去值。跟踪您看到的最大值及其发生的时间戳。

这在O(nlogn)中运行,因为您需要对事件进行排序并占用O(n)空间。