diff --git a/252_meeting_rooms/.DS_Store b/252_meeting_rooms/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/252_meeting_rooms/.DS_Store differ diff --git a/252_meeting_rooms/problem.md b/252_meeting_rooms/problem.md new file mode 100644 index 0000000..1072947 --- /dev/null +++ b/252_meeting_rooms/problem.md @@ -0,0 +1 @@ +## 問題: [252. Meeting Rooms](https://neetcode.io/problems/meeting-schedule/question) diff --git a/252_meeting_rooms/step1.md b/252_meeting_rooms/step1.md new file mode 100644 index 0000000..0a3f027 --- /dev/null +++ b/252_meeting_rooms/step1.md @@ -0,0 +1,29 @@ +# Step 1 + +- それぞれのinterval objectのstartからend値をsetに追加していく +- すでにsetに入っていたらFalseを返す +- ぜんぶ追加できてループを抜けたらTrueを返す + +```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: + 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秒