LC 1326 [H] Minimum Number of Taps to Open to Water a Garden - ALawliet/algorithms GitHub Wiki

time: O(n^2)
class Solution:
    def minTaps(self, n: int, ranges: List[int]) -> int:
        dp = [sys.maxsize] * (n+1)
        dp[0] = 0
        
        for i, tap_range in enumerate(ranges):
            left = max(0, i-tap_range)
            right = min(n, i+tap_range)
            
            for j in range(left, right + 1):
                dp[j] = min(dp[j], dp[left]+1)
                
        return dp[n] if dp[n] < sys.maxsize else -1