一、问题描述
一个程序的运行时间从start到end。给定一个数组,其中包含了所有的运行程序。求同一时刻最多有多少个程序在运行。
二、思路
- 对所有的start和end进行排序
- 遇到一个start就是增加了一个程序在运行
- 遇到一个end就是减少了一个程序在运行
- 则用一个计数器就可以统计现在有多少个程序在运行
三、Code
class ConcurrentNums { TreeMap<Integer, Integer> map = new TreeMap<>(); public ConcurrentNums() { } public int nums(int start, int end) { map.put(start, map.getOrDefault(start, 0) + 1); map.put(end, map.getOrDefault(end, 0) - 1); int res = 0, concurrentNums = 0; for(int v : map.values()) { concurrentNums += v; res = Math.max(res, concurrentNums); } return res; } }