Hard
Minimum Number of Taps to Open to Water a Garden — Python
Full explanation · Time O(n) · Space O(n)
# Time: O(n)
# Space: O(n)
class Solution(object):
def minTaps(self, n, ranges):
"""
:type n: int
:type ranges: List[int]
:rtype: int
"""
def jump_game(A):
jump_count, reachable, curr_reachable = 0, 0, 0
for i, length in enumerate(A):
if i > reachable:
return -1
if i > curr_reachable:
curr_reachable = reachable
jump_count += 1
reachable = max(reachable, i+length)
return jump_count
max_range = [0]*(n+1)
for i, r in enumerate(ranges):
left, right = max(i-r, 0), min(i+r, n)
max_range[left] = max(max_range[left], right-left)
return jump_game(max_range)