Jump Game V LeetCode solution in C++
1class Solution {2vector<int> dp;3int countJumps(vector<int> &arr, int i, int d) {4if (dp[i] != -1) return dp[i];5int jumps = 0;6int k = 1;7while (k <= d && k + i < arr.size()) {8if (arr[k + i] < arr[i]) {9jumps = max(countJumps(arr, k + i, d) + 1, jumps);10k++;11} else {12break;13}14}15k = 1;16while (k <= d && i - k >= 0) {17if (arr[i] > arr[i - k]) {18jumps = max(countJumps(arr, i - k, d) + 1, jumps);19k++;20} else {21break;22}23}24return dp[i] = jumps;25}2627public:28int maxJumps(vector<int> &arr, int d) {29dp.resize(arr.size(), -1);30int maxJumps = 0;31int n = arr.size();32for (int i = 0; i < n; i++) {33maxJumps = max(countJumps(arr, i, d), maxJumps);34}35return maxJumps + 1;36}37};