mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 20:26:07 -04:00
Update and rename free_rooms.py to non_overlapping_invervals.py
This commit is contained in:
parent
9077029939
commit
e7d19505dc
@ -1,30 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# author: bt3gl
|
|
||||||
|
|
||||||
|
|
||||||
'''
|
|
||||||
Given an array of meeting time intervals intervals
|
|
||||||
where intervals[i] = [starti, endi], return the
|
|
||||||
minimum number of conference rooms required.
|
|
||||||
'''
|
|
||||||
|
|
||||||
def min_meeting_rooms(intervals):
|
|
||||||
|
|
||||||
if not intervals:
|
|
||||||
return 0
|
|
||||||
|
|
||||||
free_rooms = []
|
|
||||||
|
|
||||||
intervals.sort(key= lambda x: x[0])
|
|
||||||
|
|
||||||
heapq.heappush(free_rooms, intervals[0][-1])
|
|
||||||
|
|
||||||
for i in intervals[1:]:
|
|
||||||
|
|
||||||
if free_rooms[0] <= i[0]:
|
|
||||||
heapq.heappop(free_rooms)
|
|
||||||
|
|
||||||
heapq.heappush(free_rooms, i[1])
|
|
||||||
|
|
||||||
return len(free_rooms)
|
|
22
heaps/non_overlapping_invervals.py
Normal file
22
heaps/non_overlapping_invervals.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# author: bt3gl
|
||||||
|
|
||||||
|
|
||||||
|
def non_overlapping_invervals(intervals):
|
||||||
|
|
||||||
|
if not intervals:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
result = []
|
||||||
|
intervals.sort(key=lambda x: x[0])
|
||||||
|
heapq.heappush(result, intervals[0][-1])
|
||||||
|
|
||||||
|
for interval in intervals[1:]:
|
||||||
|
|
||||||
|
if result[0] <= interval[0]:
|
||||||
|
heapq.heappop(result)
|
||||||
|
|
||||||
|
heapq.heappush(result, interval[1])
|
||||||
|
|
||||||
|
return len(result)
|
Loading…
x
Reference in New Issue
Block a user