Leetcode253。会議室II

問題の説明

一連の会議スケジュールがある場合、各会議時間には開始時間と終了時間が含まれます [ [ s 1 e 1 ] [ s 2 e 2 ] ] s < e [[s1、e1]、[s2、e2] \ cdots](s_i <e_i) 、会議の競合を回避すると同時に、会議室のリソースを最大限に活用することを検討するために、これらの会議を満たすために必要な会議室の数を少なくとも計算してください
失う 入る [ [ 0 30 ] [ 5 10 ] [ 15 20 ] ] 入力:[[0、30]、[5、10]、[15、20]]
2 出力:2

問題解決レポート

会議室が使い果たされると、他の会議に使用できます。
最小ヒープを構築し、ヒープ内の各会議の終了時刻を保存し、ヒープから一度に1つの要素を保存します。

  • この要素が現在の会議の開始時間よりも短い場合は、現在空の会議室があることを示しています。ヒープ内の要素をポップし、現在の会議の終了時間をプッシュします。
  • この要素が現在の会議の開始時刻よりも大きい場合、最も早い終了会議室は現在空ではないため、会議室を再度有効にする必要があります。

最後に、ヒープ内のいくつかの要素を見ると、必要な会議室の数がわかります。

実装コード

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();
    }
};
MD_
139の元の記事を公開 賞賛8 10,000+ビュー

おすすめ

転載: blog.csdn.net/qq_27690765/article/details/105102203