Number of Ways to Stay in the Same Place After Some Steps LeetCode solution in C++

1
class Solution {
2
public:
3
int n, MOD = 1e9 + 7;
4
int numWays(int steps, int arrLen) {
5
n = arrLen;
6
vector<vector<int>> memo(steps / 2 + 1, vector<int>(steps + 1, -1));
7
return dp(memo, 0, steps) % MOD;
8
}
9
long dp(vector<vector<int>> &memo, int i, int steps) {
10
if (steps == 0) return i == 0;
11
if (i < 0 || i == n || i > steps) return 0;
12
if (memo[i][steps] != -1) return memo[i][steps];
13
return memo[i][steps] =
14
(dp(memo, i, steps - 1) + dp(memo, i - 1, steps - 1) + dp(memo, i + 1, steps - 1)) %
15
MOD;
16
}
17
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0