Untitled
unknown
plain_text
22 days ago
1.4 kB
4
Indexable
class Solution {
private Boolean[] reachableResult;
private int maxVisited = 0;
private boolean isGivenElementZero(int i, String s) {
return s.charAt(i) == '0';
}
private boolean reachableIterations(int currPos, String s, int minJump, int maxJump) {
if (currPos == s.length()-1) {
return isGivenElementZero(currPos, s) ? true : false;
}
if (reachableResult[currPos] != null) {
return reachableResult[currPos];
}
int startPos = Math.max(currPos + minJump, maxVisited + 1);
int lastPossiblePos = Math.min((currPos + maxJump), s.length()-1);
for (int i = startPos; i <= lastPossiblePos; i++) {
maxVisited = Math.max(maxVisited, i);
if (!isGivenElementZero(i, s)) continue;
boolean canReachFromHere = reachableIterations(i, s, minJump, maxJump);
if (canReachFromHere) {
return reachableResult[currPos] = true;
};
}
return reachableResult[currPos] = false;
}
public boolean canReach(String s, int minJump, int maxJump) {
reachableResult = new Boolean[s.length()];
return isGivenElementZero((s.length()-1), s) ?
reachableIterations(0, s, minJump, maxJump) : false;
}
}Editor is loading...
Leave a Comment