首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Leetcode|堆|253. 会议室 II(先按开始时间升序,然后用堆)

Leetcode|堆|253. 会议室 II(先按开始时间升序,然后用堆)

作者头像
SL_World
发布2021-09-18 17:28:24
发布2021-09-18 17:28:24
1.1K0
举报
文章被收录于专栏:XX

0 问题概述

这个问题不同于下图《贪心算法—活动安排问题》

因为活动安排问题是

  • 只有1个会议室,和规定使用总时常,讨论1个会议室如何装下更多会议,是具有贪心选择性质的0-1背包问题,一般取每个会议的结束时间进行升序排序,然后计算

而本题与活动安排问题恰好相反

  • 给定固定数量会议,如何用最少的会议室装下所有会议,依然具有贪心选择性质,该问题需要用每个会议的开始时间进行升序排序

1 先按开始时间升序,然后用堆

代码语言:javascript
复制
class Solution {
private:
    priority_queue<int, vector<int>, greater<int>> q;
    static bool cmp(const vector<int>& a, const vector<int>& b) {
        if (a[0] == b[0]) return a[1] < b[1];
        return a[0] < b[0];
    }
public:
    int minMeetingRooms(vector<vector<int>>& intervals) {
        // 1.按开始时间升序
        sort(intervals.begin(), intervals.end(), cmp);
        // 2.用堆
        for (auto& inter : intervals) 
            if (q.empty() || inter[0] < q.top()) q.emplace(inter[1]); // 堆的添加
            else {  // 堆的更新
                q.pop();
                q.emplace(inter[1]);
            }
        return q.size();
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0 问题概述
  • 1 先按开始时间升序,然后用堆
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档