From 1f24d43fa6946d60b282dd2470bd9587c12facd5 Mon Sep 17 00:00:00 2001 From: potrue <126231160+potrue@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:05:24 +0900 Subject: [PATCH] 253. Meeting Rooms II https://leetcode.com/problems/meeting-rooms-ii/ https://leetcode.ca/2016-08-09-253-Meeting-Rooms-II/ --- 253/253.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 253/253.md diff --git a/253/253.md b/253/253.md new file mode 100644 index 0000000..e194f12 --- /dev/null +++ b/253/253.md @@ -0,0 +1,54 @@ +## 何も見ずに解いてみる + +```cpp +class Solution { +public: + int minMeetingRooms(vector>& intervals) { + multimap time_to_increment; + for (const vector& interval : intervals) { + time_to_increment.insert({interval[0], +1}); + time_to_increment.insert({interval[1], -1}); + } + int max_num_rooms = 0; + int num_rooms = 0; + for (const auto& [_, increment] : time_to_increment) { + num_rooms += increment; + max_num_rooms = max(max_num_rooms, num_rooms); + } + return max_num_rooms; + } +}; +``` + +## 他の人のコードを見てみる + +https://github.com/tokuhirat/LeetCode/pull/56/files +https://github.com/olsen-blue/Arai60/pull/57/files +https://github.com/ryosuketc/leetcode_arai60/pull/56/files +https://github.com/Ryotaro25/leetcode_first60/pull/61/files + +cppのmapやunordered_mapはpythonでいうdefaultdictみたいな振る舞いをするらしい。([]で存在しない要素にアクセスしようとすると自動でvalueがコンストラクタから初期化される) + +## 最終コード + +mapでいちいちやるよりvectorに全部入れてからsortしたほうがちょっと早いような気もするけどまあこれで良い気がします。 + +```cpp +class Solution { +public: + int minMeetingRooms(vector>& intervals) { + map time_to_num_change; + for (const vector& interval : intervals) { + ++time_to_num_change[interval[0]]; + --time_to_num_change[interval[1]]; + } + int max_num_rooms = 0; + int num_rooms = 0; + for (const pair& [_, num_change] : time_to_num_change) { + num_rooms += num_change; + max_num_rooms = max(max_num_rooms, num_rooms); + } + return max_num_rooms; + } +}; +```