From 10557d39dd94c9b8f07b03666511d153af3abd23 Mon Sep 17 00:00:00 2001 From: Hiro Funatsuka Date: Sat, 2 May 2026 21:29:42 +0900 Subject: [PATCH] Solve meeting rooms --- 252_meeting_rooms/.DS_Store | Bin 0 -> 6148 bytes 252_meeting_rooms/problem.md | 1 + 252_meeting_rooms/step1.md | 29 +++++++++++++++++++++++++++++ 252_meeting_rooms/step2.md | 25 +++++++++++++++++++++++++ 252_meeting_rooms/step3.md | 25 +++++++++++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 252_meeting_rooms/.DS_Store create mode 100644 252_meeting_rooms/problem.md create mode 100644 252_meeting_rooms/step1.md create mode 100644 252_meeting_rooms/step2.md create mode 100644 252_meeting_rooms/step3.md diff --git a/252_meeting_rooms/.DS_Store b/252_meeting_rooms/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 bool: + times = set() + for interval in intervals: + for i in range(interval.start, interval.end): + if i in times: + return False + times.add(i) + return True +``` + +時間計算量: $O(nm)$ + +空間計算量: $O(nm)$ diff --git a/252_meeting_rooms/step2.md b/252_meeting_rooms/step2.md new file mode 100644 index 0000000..c3cf678 --- /dev/null +++ b/252_meeting_rooms/step2.md @@ -0,0 +1,25 @@ +# Step 2 + +- 開始時間でintervalをソートし、intervalの開始時間が前のintervalの終了時間より早い場合はFalseを返す + +```python +""" +Definition of Interval: +class Interval(object): + def __init__(self, start, end): + self.start = start + self.end = end +""" + +class Solution: + def canAttendMeetings(self, intervals: List[Interval]) -> bool: + intervals.sort(key=lambda i: i.start) + for i in range(1, len(intervals)): + if intervals[i].start < intervals[i - 1].end: + return False + return True +``` + +時間計算量: $O(n\log n)$ + +空間計算量: $O(1)$ diff --git a/252_meeting_rooms/step3.md b/252_meeting_rooms/step3.md new file mode 100644 index 0000000..47cd58d --- /dev/null +++ b/252_meeting_rooms/step3.md @@ -0,0 +1,25 @@ +# Step 3 + +```python +""" +Definition of Interval: +class Interval(object): + def __init__(self, start, end): + self.start = start + self.end = end +""" + +class Solution: + def canAttendMeetings(self, intervals: List[Interval]) -> bool: + intervals.sort(key=lambda i: i.start) + for i in range(1, len(intervals)): + if intervals[i - 1].end > intervals[i].start: + return False + return True +``` + +1回目: 1分 15秒 + +2回目: 0分 50秒 + +3回目: 0分 53秒