Python3. Clean greedy. O(N)
Idea: iterate through array and for each position i check range [i - maxJump : i - minJump] as positions from where we can reach i.\n\n\nclass Solution:\n    de
Idea: iterate through array and for each position `i` check range `[i - maxJump : i - minJump]` as positions from where we can reach `i`.\n\n```\nclass Solution:\n    def canReach(self, s: str, minJump: int, maxJump: int) -> bool:\n        if s[-1] == "1":\n            return False\n\n        can_reach = [0] * len(s)\n        can_reach[0] = 1\n        count = 0                                                      # number of positions in range `[i - maxJump:i - minJump]` from where we can jump\n\t\t\n        for i in range(minJump, len(s)):\n            count += can_reach[i - minJump]                            # if position that\'s added to range is reachable, increment `count`\n            can_reach[i] = s[i] == "0" and count > 0                   # if "0" and there are reachable positions in range `[i - maxJump:i - minJump]`, then current position is also reachable\n            count -= int(i - maxJump >= 0 and can_reach[i - maxJump])  # if position that\'s removed from range is reachable, decrement `count`\n        \n        return can_reach[-1]\n```
[]