Leetcode 1326. 灌溉花园的最少水龙头数目 (DAY 69)---- 动态规划学习期 (算法题路还好长好长啊 确实积累太少)

原题题目

在这里插入图片描述


代码实现(首刷大部分看解小部分自解)

class Solution {
    
    
public:
    int minTaps(int n, vector<int>& ranges) {
    
    
        vector<int> dp(n+1,INT_MAX);
        int l,r,pre;
        for(int i=0;i<=n;++i)
        {
    
    
            if(!ranges[i])  continue;
            l = max(0,i-ranges[i]);
            r = min(n,i+ranges[i]);

            pre = (l<=0 ? 0: dp[l]);
            if(pre == INT_MAX) continue;
            for(int temp = l;temp<=r;temp++)
                dp[temp] = min(dp[temp],pre+1);
        }
        return dp[n]==INT_MAX ? -1:dp[n];
    }
};

猜你喜欢

转载自blog.csdn.net/qq_37500516/article/details/115205754