1269. 停在原地的方案数
难度困难80
有一个长度为 arrLen
的数组,开始有一个指针在索引 0
处。
每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。
给你两个整数 steps
和 arrLen
,请你计算并返回:在恰好执行 steps
次操作以后,指针仍然指向索引 0
处的方案数。
由于答案可能会很大,请返回方案数 模 10^9 + 7
后的结果。
示例 1:
1 | 输入:steps = 3, arrLen = 2 |
示例 2:
1 | 输入:steps = 2, arrLen = 4 |
示例 3:
1 | 输入:steps = 4, arrLen = 2 |
提示:
1 <= steps <= 500
1 <= arrLen <= 10^6
记忆化搜索
1 | class Solution { |
动态规划
dp[i][j]
代表走i
步最后位置停留在j
处的次数
那么转移方程就是
dp[i][j] = dp[i-1][j] + dp[i-1][j-1] + dp[i-1][j+1]
分别是原地不动的步数+向左移动一步的步数+向右移动一步的步数的和
1 | class Solution { |
动态规划(优化空间复杂度)
1 | class Solution { |
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/number-of-ways-to-stay-in-the-same-place-after-some-steps/solution/ting-zai-yuan-di-de-fang-an-shu-by-leetcode-soluti/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。