Leetcode 253.会議室II


記事の目次
  • 問題説明
  • 問題解決報告
  • 実装コード
  • 問題の説明
    会議時間の配列を指定します.各会議時間は開始と終了の時間を含みます.[s 1,e 1],[s 2,e 2]⋯_](s2,e 2)[s 1,e 1],[s 2,e 2]会議の衝突を避けるために、会議室の資源を十分に利用することを考慮して、少なくともどれぐらいの会議室が必要かを計算してください.これらの会議のスケジュール入力を満たすことができます.[[0,30]、[5,20],[15,20]]入力:[0,30],[5,10,20]入力:出力2:出力
    解題報告
    会議室の使用が終わったら、他の会議に使えるようにします.最小の山を作って、各会議の終了時間を保存します.毎回、山から元素を取り出します.
  • 要素が現在の会議の開始時間より小さい場合、現在空いている会議室があると表しています.スタックの中の要素をイジェクトし、現在の会議の終了時間を押し込みます.
  • 要素が現在の会議の開始時間より大きい場合、最初に終了した会議室は現在空いていないという意味で、会議室を再起動する必要があります.
    最後に山の中にいくつかの元素があると、どれぐらいの会議室が必要ですか?
    コードを実現
    class Solution {
         
    public:
        int minMeetingRooms(vector<vector<int>>& intervals) {
         
            sort(intervals.begin(),intervals.end());
            priority_queue<int, vector<int>, greater<int>> pq;
            int s,e;
            for(int i=0;i<intervals.size();i++){
         
                s=intervals[i][0];
                e=intervals[i][1];
                if(pq.size()==0){
         
                    pq.push(e);
                    continue;
                }
                if(pq.top()<=s){
         
                    pq.pop();
                }
                 pq.push(e);
            }
            return pq.size();
        }
    };