系统以格式生成日志:startTime,endTime,Request。 如何计算最大并发请求数的时间间隔? 我尝试使用带有时间戳的hashmap作为键请求计数作为值。使用每个请求和更新计数器的开始和时间之间的所有值填充键,但如果时间戳精确到毫秒,则需要很大的空间。
答案 0 :(得分:2)
将列表转换为具有属性ts,value
的事件startTime:123456,endTime:23456,请求:....成为两个事件:
(123456,1) (23456,-1)
您现在的请求数量是事件的2倍。
如果按时间戳对这些事件进行排序,您可以迭代它们添加和减去值。跟踪您看到的最大值及其发生的时间戳。
这在O(nlogn)中运行,因为您需要对事件进行排序并占用O(n)空间。