# 1642. Furthest Building You Can Reach 給定一排房子,每棟房子有自己的高度 你初始位置於 index 0,往前移動,若下一棟房子高度較低,可以直接移動過去 你的手上有一些磚塊和一些梯子,梯子可以無限延長,磚塊可以疊起來 若下一棟房子高度較高,可以使用梯子或是磚塊 請問你最遠可以移動到哪一個位置 house = [1, 3, 5, 1, 2] bricks = 20 #[1, 10] cost 9 bricks ladder = 3 #[1, 10] cost 1 ladder pos 18 1. brick, ladder pos 19 total-b or totalLadder - 1 br = 200000 house = [1,3,5,7,9,100] gap. = [ 2 2 2 2 91] bricks = 10 ladder = 1 gap. = [ 2 2 2 2 91 10 5 6] dp. = [ 2 2 2] -> [2 2 2 2]=8 >6 heappop->2 [2 2 2] bricks = 6 ladder = 1 ```python= def findFarestPos(house, bricks, ladders): # [-1, -5] -> error b-> >0 # check param # [3, 2, 1] # [1, 2, 3] b=1 l=1 # [1, 3, 5, 99] b=3 l=1 # loop house maxHeap = [] curSum = 0 for i in range(1, len(house)): #N # no need bricks or ladder if house[i] <= house[i-1]: continue gap = house[i] - house[i-1] # 2(3-1) 2(5-3) 94(99-5) curSum += gap # 2+94 heappush(maxHeap, -gap)# [-2, -94] #logN if curSum > bricks: # 96 > 3 if ladders == 0: return i-1 negMaxGap = heappop(maxHeap) # -2 curSum += negMaxGap #2 ladders -= 1 #0 return len(house)-1 N = house element numser TC O(NlogN) ```