Unique Solution using Range
Intuition\n Describe your first thoughts on how to solve this problem. \nWhile iterating the string, If the current 0 is reachable, Add +1 at the start of jump 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\nWhile iterating the string, If the current 0 is reachable, Add +1 at the start of jump range and -1 at the end of Jump Range, continue to sum the range value to know if current 0 is reachable or not.\n# Approach\n<!-- Describe your approach to solving the problem. -->\nWhenever we starting a possible jump range, the start will be put as +1 and the end will be -1.\nSo, if the current zero is reachable through any previous jumps, the sum of range values till now must be > 0.\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\nO(n)\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\nO(n)\n# Code\n```\npublic class Solution {\n    public bool CanReach(string s, int minJump, int maxJump) {\n        int n = s.Length;\n        int[] range = new int[n];\n        if (s[n-1] != \'0\')\n        {\n            return false;\n        }\n        int r = 0;\n        for(int i=0; i<s.Length; i++)\n        {\n            r += range[i];\n            if (i == n-1)\n            {\n                return r > 0;\n            }\n            // Reachable zero, since r > 0\n            if (s[i] == \'0\' && (r > 0 || i == 0))\n            {\n                int max = Math.Min(i+maxJump, n-1);\n                if (max+1 < n)\n                {\n                    range[max+1] -= 1;\n                }\n                if ((i+minJump) < n) {\n                    range[i+minJump] += 1;\n                }\n            }\n            //Print(range);\n        }\n        return true;\n    }\n\n    private void Print(int[] r)\n    {\n        for(int i=0; i<r.Length; i++)\n        {\n            Console.Write($"{r[i]} : ");\n        }\n        Console.WriteLine("\\n");\n    }\n}\n```
['C#']