美文网首页
253会议室II

253会议室II

作者: su945 | 来源:发表于2020-06-25 15:40 被阅读0次

    题目描述

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

    示例 1:

    输入: [[0, 30],[5, 10],[15, 20]]
    输出: 2

    问题分析

    利用小顶堆

    • 首先根据开始时间进行排序
    • 数据中存入会议结束时间
    • 新进会议的开始时间与结束时间比较,
      如果大于则pop(),然后再push()
      如果小于则push(),即新开一个会议

    解题思路1

    class Solution {
    public:
        
        int minMeetingRooms(vector<vector<int>>& intervals) {
    
            if (intervals.empty())
            {
                return 0;
            }
            //进行从小到大排序
            sort(intervals.begin(), intervals.end());
            //构建小顶堆
            priority_queue<int, vector<int>, greater<int>> store;
    
            for (auto val : intervals)
            {
                if (!store.empty() && store.top() <= val[0])
                {
                    store.pop();
                }
                store.push(val[1]);
            }
            return store.size();
        }
    };
    

    相关文章

      网友评论

          本文标题:253会议室II

          本文链接:https://www.haomeiwen.com/subject/damsfktx.html