Skip to content

Commit

Permalink
17.3 find_minimum_visits
Browse files Browse the repository at this point in the history
  • Loading branch information
Aaron Nguyen committed Mar 18, 2022
1 parent 6d78b67 commit 9aeba5d
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
44 changes: 44 additions & 0 deletions 17-greedy/find_minimum_visits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# O(nlogn) time, O(1) space
def find_minimum_visits(intervals):
# [0, 3]
# [2, 6] -> [2, 3]
# [3, 4] -> 3
# [6, 9] -> 6
intervals.sort(key=lambda interval: interval[0])
current = []
res = []

for interval in intervals:
if not current:
current = interval
continue
current = [max(current[0], interval[0]), min(current[1], interval[1])]
if current[0] == current[1]:
res.append(current[0])
current = []

if current:
res.append(current[0])

return res


# O(nlogn) time, O(1) space
def find_minimum_visits_2(intervals):
# sort intervals by endpoints
intervals.sort(key=lambda interval: interval[1])
# [0, 3], [3, 4], [2, 6], [6, 9]
last_visit_time = float("-inf")
res = []
for interval in intervals:
if interval[0] > last_visit_time:
last_visit_time = interval[1]
res.append(last_visit_time)
return res


if __name__ == "__main__":
intervals = [[0, 3], [2, 6], [3, 4], [6, 9]]
assert find_minimum_visits(intervals) == [3, 6]
assert find_minimum_visits_2(intervals) == [3, 9]
print("All tests passed!")
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
- [x] Boot-camp 03/16
- [x] 17.1 Compute an Optimum Assignment of Tasks 03/16
- [x] 17.2 Schedule to Minimize Waiting Time 03/17
- [ ] 17.3 The Interval Covering Problem
- [x] 17.3 The Interval Covering Problem 03/18
- ...

# LeetCode
Expand Down

0 comments on commit 9aeba5d

Please sign in to comment.