diff --git a/solution/1800-1899/1871.Jump Game VII/README.md b/solution/1800-1899/1871.Jump Game VII/README.md index 787dabaa29100..26ecf25c6543c 100644 --- a/solution/1800-1899/1871.Jump Game VII/README.md +++ b/solution/1800-1899/1871.Jump Game VII/README.md @@ -102,6 +102,35 @@ class Solution { } ``` +### **JavaScript** + +```js +/** + * @param {string} s + * @param {number} minJump + * @param {number} maxJump + * @return {boolean} + */ +var canReach = function(s, minJump, maxJump) { + let n = s.length; + let dp = new Array(n).fill(0); + let sum = new Array(n + 1).fill(0); + dp[0] = 1; + sum[1] = 1; + for (let i = 1; i < n; i++) { + if (s.charAt(i) == '0') { + let left = Math.max(0, i - maxJump); + let right = i - minJump; + if (left <= right && sum[right + 1] - sum[left] > 0) { + dp[i] = 1; + } + } + sum[i + 1] = sum[i] + dp[i]; + } + return dp.pop(); +}; +``` + ### **...** ``` diff --git a/solution/1800-1899/1871.Jump Game VII/README_EN.md b/solution/1800-1899/1871.Jump Game VII/README_EN.md index 1f9fd05c044de..c6ff29ff45fe3 100644 --- a/solution/1800-1899/1871.Jump Game VII/README_EN.md +++ b/solution/1800-1899/1871.Jump Game VII/README_EN.md @@ -90,6 +90,35 @@ class Solution { } ``` +### **JavaScript** + +```js +/** + * @param {string} s + * @param {number} minJump + * @param {number} maxJump + * @return {boolean} + */ +var canReach = function(s, minJump, maxJump) { + let n = s.length; + let dp = new Array(n).fill(0); + let sum = new Array(n + 1).fill(0); + dp[0] = 1; + sum[1] = 1; + for (let i = 1; i < n; i++) { + if (s.charAt(i) == '0') { + let left = Math.max(0, i - maxJump); + let right = i - minJump; + if (left <= right && sum[right + 1] - sum[left] > 0) { + dp[i] = 1; + } + } + sum[i + 1] = sum[i] + dp[i]; + } + return dp.pop(); +}; +``` + ### **...** ``` diff --git a/solution/1800-1899/1871.Jump Game VII/Solution.js b/solution/1800-1899/1871.Jump Game VII/Solution.js new file mode 100644 index 0000000000000..6f72de7cda52b --- /dev/null +++ b/solution/1800-1899/1871.Jump Game VII/Solution.js @@ -0,0 +1,24 @@ +/** + * @param {string} s + * @param {number} minJump + * @param {number} maxJump + * @return {boolean} + */ + var canReach = function(s, minJump, maxJump) { + let n = s.length; + let dp = new Array(n).fill(0); + let sum = new Array(n + 1).fill(0); + dp[0] = 1; + sum[1] = 1; + for (let i = 1; i < n; i++) { + if (s.charAt(i) == '0') { + let left = Math.max(0, i - maxJump); + let right = i - minJump; + if (left <= right && sum[right + 1] - sum[left] > 0) { + dp[i] = 1; + } + } + sum[i + 1] = sum[i] + dp[i]; + } + return dp.pop(); +}; \ No newline at end of file