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

1
class Solution:
2
def numWays(self, steps: int, arrLen: int) -> int:
3

4
# obtain maximum index we can reach
5
maxLen = min(steps + 1, arrLen)
6
dp = [0] * maxLen
7
dp[0] = 1
8

9
for step in range(1, steps + 1):
10
dp2 = [0] * maxLen
11
for pos in range(maxLen):
12
# dp[step][pos] = dp[step-1][pos] + dp[step-1][pos-1] + dp[step-1][pos+1]
13
temp1 = 0 if pos == 0 else dp[pos - 1]
14
temp2 = 0 if pos == maxLen - 1 else dp[pos + 1]
15
dp2[pos] = (dp[pos] + temp1 + temp2) % (10**9 + 7)
16

17
dp = dp2
18
return dp[0]

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0