1642. Furthest Building You Can Reach
https://leetcode.com/problems/furthest-building-you-can-reach/
Python
import heapq
class Solution:
def furthestBuilding(self, heights: List[int], bricks: int, ladders: int) -> int:
heap = []
heapq.heapify(heap)
for i in range(1, len(heights)):
diff = heights[i] - heights[i-1]
# Jump down, won't need bricks or ladders
if diff <= 0:
continue
heapq.heappush(heap, diff)
if len(heap) <= ladders:
# Ladders still enough
continue
# Use the bricks on the miniumn cost of diff
bricks -= heapq.heappop(heap)
# Running out of bricks, reach the farest building
if bricks < 0:
return i-1
# Resource is enough to reaching the end
return len(heights)-1