Talentd
FleetCode

1871. Jump Game VII

Medium35.4% acceptance4 companies

You are given a 0-indexed binary string s and two integers minJump and maxJump. In the beginning, you are standing at index 0, which is equal to '0'. You can move from index i to index j if the following conditions are fulfilled:

  • i + minJump <= j <= min(i + maxJump, s.length - 1), and
  • s[j] == '0'.

Return true if you can reach index s.length - 1 in s, or false otherwise.

Example 1:

Input: s = "011010", minJump = 2, maxJump = 3
Output: true
Explanation:
In the first step, move from index 0 to index 3. 
In the second step, move from index 3 to index 5.

Example 2:

Input: s = "01101110", minJump = 2, maxJump = 3
Output: false

Constraints:

  • 2 <= s.length <= 105
  • s[i] is either '0' or '1'.
  • s[0] == '0'
  • 1 <= minJump <= maxJump < s.length

Asked at 4 companies

Hints open one at a time

Hint 1
Consider for each reachable index i the interval [i + a, i + b].
Hint 2
Use partial sums to mark the intervals as reachable.
12:28
Still stuck?Read 3 approaches, or watch a walkthrough.
Open solution
Loading editor…
1class Solution:
2 def canReach(self, s: str, minJump: int, maxJump: int) -> bool:
3
Starter codePython 3Spaces: 4
Examples
Input
"011010"
2
3
Input
"01101110"
2
3
Your code is saved on this device.Solution