1871. Jump Game VII
Problem description:
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)
, ands[j] == '0'
.
Return true
if you can reach index s.length - 1
in s
, or false
otherwise.
Example 1:
1 | Input: s = "011010", minJump = 2, maxJump = 3 |
Example 2:
1 | Input: s = "01101110", minJump = 2, maxJump = 3 |
Constraints:
2 <= s.length <= 105
s[i]
is either'0'
or'1'
.s[0] == '0'
1 <= minJump <= maxJump < s.length
Solution:
Initial thought: brute force and do exactly what the problem says:
- Create a queue of reachable indices starting with 0
- While the queue is not empty, pull from front of queue, call this i
- Let x go from i + minJumps to i + maxJumps, if s== ‘0’, add to queue
- Repeat till queue is empty or reached end
- If reached end return true, if queue empty, return false
1 | class Solution: |
time complexity: $O(n)$
space complexity: $O(n)$
reference:
related problem: