LeetCode—253.会議室II(Meeting Rooms II)——分析とコード(C++)
8903 ワード
LeetCode—253.会議室II[Meeting Rooms II]——分析及びコード[C+]一、テーマ 二、分析及びコード 1. 立ち上がり時間はそれぞれ となる.(1)考え方 (2)コード (3)結果 三、その他 一、テーマ
会議のスケジュールの配列を指定すると、各会議時間には開始と終了の時間[[s 1,e 1],[s 2,e 2],...](si例1:
例2:
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/meeting-rooms-ii著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
二、分析及びコード
1.起止時間別ソート
(1)考え方
すべての会議の開始時間と終了時間をそれぞれ記録してソートする2つのベクトルを設計し、現在の会議室数と空き会議室数を2つの整数でそれぞれ記録します.開始時間を巡り、順次処理:1)終了時間<現在の開始時間、空き会議室数++があり、ポインタは次の終了時間を指す.2)空き会議室数=0、会議室数++;3)空き会議室数!=0,空き会議室数-;ソート後の配列は必ずi番目の開始時間(2)コード
(3)結果
実行時間:20 ms、すべてのC++コミットで91.94%のユーザーを破った.メモリ消費量:12 MBで、すべてのC++コミットで100.00%のユーザーを破った.
三、その他
しばらくありません.
会議のスケジュールの配列を指定すると、各会議時間には開始と終了の時間[[s 1,e 1],[s 2,e 2],...](si
: [[0, 30],[5, 10],[15, 20]]
: 2
例2:
: [[7,10],[2,4]]
: 1
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/meeting-rooms-ii著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
二、分析及びコード
1.起止時間別ソート
(1)考え方
すべての会議の開始時間と終了時間をそれぞれ記録してソートする2つのベクトルを設計し、現在の会議室数と空き会議室数を2つの整数でそれぞれ記録します.開始時間を巡り、順次処理:1)終了時間<現在の開始時間、空き会議室数++があり、ポインタは次の終了時間を指す.2)空き会議室数=0、会議室数++;3)空き会議室数!=0,空き会議室数-;ソート後の配列は必ずi番目の開始時間(2)コード
class Solution {
public:
int minMeetingRooms(vector<vector<int>>& intervals) {
if (intervals.empty())
return 0;
vector<int> begin_time(intervals.size());//
vector<int> end_time(intervals.size());//
for (int i = 0; i < intervals.size(); i++) {
begin_time[i] = intervals[i][0];
end_time[i] = intervals[i][1];
}
sort(begin_time.begin(), begin_time.end());
sort(end_time.begin(), end_time.end());
int room = 0, free_room = 0, endnum = 0;// , ,
for (int i = 0; i < intervals.size(); i++) {
int time = begin_time[i];
while (endnum < intervals.size() && end_time[endnum] < time + 1) {//
endnum++;
free_room++;
}
if (free_room > 0)// , 1
free_room--;
else// ,
room++;
}
return room;
}
};
(3)結果
実行時間:20 ms、すべてのC++コミットで91.94%のユーザーを破った.メモリ消費量:12 MBで、すべてのC++コミットで100.00%のユーザーを破った.
三、その他
しばらくありません.