一道算法题:leetcode 253 最小的会议室数满足预订需求

image

也可以用来算给你一堆二维数组,算区间的最大的重叠次数是多少。

思路:

  • 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]乃至其后的所有数组,所有会议室对于他们来说都是一样的,如图:

image

代码如下:

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值