Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pdb
- import heapq as h
- import sys
- # HEAP
- # Insert O(log n)
- # Delete O(log n)
- # Search O(n)
- # Building a Heap O(n)
- def getMinGates(landingTimes, takeOffTimes, maxWaitTime, initialPlanes):
- intervals = []
- for x in range(0,max(len(landingTimes), len(takeOffTimes))):
- if x >= len(landingTimes):
- intervals.append([0, takeOffTimes[x]])
- if x >= len(takeOffTimes):
- intervals.append([maxWaitTime + landingTimes[x], sys.maxint])
- intervals.append([maxWaitTime + landingTimes[x], takeOffTimes[x]])
- return meetingRooms2(intervals)
- def meetingRooms2(intervals=[[0,0]]):
- if (intervals == None or len(intervals) == 0):
- return 0
- # start 0, end 1
- intervals.sort(key=lambda list: list[0])
- minHeap = []
- h.heappush(minHeap, (intervals[0][1]))
- for i in range(1, len(intervals)):
- curr = intervals[i]
- earliest_end = h.heappop(minHeap)
- if (curr[0] >= earliest_end):
- earliest_end = curr[1]
- else:
- h.heappush(minHeap, curr[1])
- h.heappush(minHeap, earliest_end)
- return len(minHeap)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement