Furthest Building You Can Reach

heightsArray
[4, 2, 7, 6, 9, 14, 12]
bricksInteger
5
laddersInteger
1
1def furthest_building(heights, bricks, ladders):
2  heap = []  # min-heap of climbs where we used bricks
3  bricks_used = 0
4
5  for i in range(len(heights) - 1):
6    climb = heights[i + 1] - heights[i]
7
8    if climb <= 0:
9      continue  # no climb needed
10
11    # Use bricks for this climb
12    bricks_used += climb
13    heapq.heappush(heap, climb)
14
15    if bricks_used > bricks:
16      # Exceeded bricks, need a ladder
17      if ladders == 0:
18        return i  # can't proceed
19
20      # Replace smallest climb with a ladder
21      smallest = heapq.heappop(heap)
22      bricks_used -= smallest
23      ladders -= 1
24
25  return len(heights) - 1
0 / 14
heightsheap427691412