程式語言 - LeetCode - C++ - 1871. Jump Game VII



題目:


方法:

P.S. 我這裡能不能被前面某人跳到

解答:

class Solution {
public:
    bool canReach(string s, int minJump, int maxJump) {
        int reach = 0;
        int n = s.size();
        vector<bool> dp(n, false);

        dp[0] = true;

        for (int i = 1; i < n; ++i) {
            if (i - minJump >= 0 && dp[i - minJump]) {
                reach += 1;
            }

            if (i - maxJump - 1 >= 0 && dp[i - maxJump - 1]) {
                reach -= 1;
            }
        
            dp[i] = reach > 0 && s[i] == '0';
        }

        return dp[n - 1];
    }
};