class Solution {
public:
bool sol(vector& nums, int index, int ans, int& mini, vector<vector>& dp, int steps) {
if (index >= nums.size()) {
return false;
}
if (index == nums.size() - 1) {
mini = min(mini, ans);
return true;
}
if (nums[index] == 0) {
return false;
}
if (dp[index][steps] != -1) {
return dp[index][steps];
}
for (int i = nums[index]; i > 0; i–) {
bool out = sol(nums, index + i, ans + 1, mini, dp, i);
if (out == true) {
return true;
}
dp[index][i] = out;
}
return false;
}
int jump(vector<int>& nums) {
int mini = INT_MAX;
int maxSteps = *max_element(nums.begin(), nums.end()) + 1;
vector<vector<int>> dp(nums.size(), vector<int>(maxSteps, -1));
bool ans = sol(nums, 0, 0, mini, dp, 0);
return ans ? mini : -1; // Return -1 if no solution found
}
};
can anyone explain where this code is wrong