1. 解题思路
这一题思路上就是一个动态规划,我们只需要确定一下运行的终止条件,然后写一下地推函数即可。
显然,由于减一操作不能连续进行,因此,如果某一次jump之后到达的位置大于k+1,此时必然就不可能再到达目标位置k了,我们跳出迭代即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def waysToReachStair(self, k: int) -> int:
@lru_cache(None)
def dp(loc, jump, allow_op1):
ans = 0
if loc == k:
ans += 1
if allow_op1 and loc != 0:
ans += dp(loc-1, jump, False)
if loc + jump <= k+1:
ans += dp(loc+jump, jump * 2, True)
return ans
ans = dp(1, 1, True)
return ans
提交代码评测得到:耗时116ms,占用内存18.4MB。
1705

被折叠的 条评论
为什么被折叠?



