LeetCode 253. 会议室 II

该博客介绍了如何解决LeetCode上的253题——会议室II,即给定会议开始和结束时间,计算至少需要多少间会议室以避免冲突。博主通过将问题转化为上下车问题来解析思路,并提供了相关代码实现。
摘要由CSDN通过智能技术生成

253. 会议室 II

给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。

示例 1:

输入:

[[0, 30],[5, 10],[15, 20]]

输出: 2

示例 2:

输入:

[[7,10],[2,4]]

输出: 1

思路:

可以理解成上下车问题,开始时间就相当于上车,结束时间相当于下车,整体的流程,如下

↑    ↑    ↓      ↑     ↓      ↓
0----5----10-----15----20-----30

代码:

/**
 * @param {number[][]} intervals
 * @return {number}
 */
var minMeetingRooms = function(intervals) {
    let len = intervals.length;
    if(len == 0){
        return 0;
    }
    let a = new Array(len),b = new Array();
    for(let i = 0; i< len ;++i){
        a[i] = intervals[i][0];
        b[i] = intervals[i][1];
    }
    a.sort((a,b)=>a-b); // 开始时间排序
    b.sort((a,b)=>a-b); // 结束时间排序
    let a_pos = 0,b_pos = 0,res =0;
    while(b_pos<len && a_pos<len){
        while(a_pos<len && a[a_pos]<b[b_pos]) a_pos++; //在遇到第一个下车点之前,不断上车
        res = Math.max(res,a_pos-b_pos);
        while(b_pos<len &&a[a_pos]>=b[b_pos]) b_pos++;
    }
    return res;

};

参考: https://leetcode-cn.com/problems/meeting-rooms-ii/comments/225156

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值