Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added 252_meeting_rooms/.DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions 252_meeting_rooms/problem.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
## 問題: [252. Meeting Rooms](https://neetcode.io/problems/meeting-schedule/question)
29 changes: 29 additions & 0 deletions 252_meeting_rooms/step1.md
Original file line number Diff line number Diff line change
@@ -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)$
25 changes: 25 additions & 0 deletions 252_meeting_rooms/step2.md
Original file line number Diff line number Diff line change
@@ -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)$
25 changes: 25 additions & 0 deletions 252_meeting_rooms/step3.md
Original file line number Diff line number Diff line change
@@ -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秒