也可以用来算给你一堆二维数组,算区间的最大的重叠次数是多少。
思路:
-
1.首先按照[x,y]中的x排序
-
2.新建一个res数组作为会议室,此时会议室为空,后续res数组存的是各个会议室的结束时间。
-
3.遍历intervals数组,对于其中每一个[x,y]:遍历会议室res数组,如果找到 x 大于等于某间会议室的结束时间,说明这个[x,y]可以使用这个会议室,那么把会议室的结束时间改为y即可,随后break,不需要再继续找会议室了
- 如果遍历完了res会议室数组,都没有找到这样的会议室,说明[x,y]去任何一间会议室都会造成冲突,则在最后要push_back(y) ,相当于重新找了一间会议室,结束时间就是y。
- 这里用flag作为记录,如果找到了会议室,那么把flag变为true,则循环结束之后不需要重新添加会议室,否则添加个新的会议室。
这里有一个点,为什么[x,y]按顺序在res数组里找到一个合适的就可以更改结束时间并且break呢,[x, y]在不同的会议室会有什么区别呢?
ans: 因为intervals这个数组是按照[x,y]中的x排序的,所以对于剩下的[ , ],会议开始时间肯定要小于x,那么对于[x,y]乃至其后的所有数组,所有会议室对于他们来说都是一样的,如图:
代码如下: