题解 | #跳台阶#

跳台阶

http://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4

动态规划

  • 第1个台阶dp[1]:1种跳法

  • 第2个台阶dp[2]:2种跳法(1+1或2)

  • 第3个台阶dp[3]:根据每次只能跳1步或2步,跳到第3个台阶可以拆分为:从第1个台阶跳2步上去,或者从第2个台阶跳1步上去,那么跳到第3个台阶方式数量,就转化为:跳到1个台阶方式数量+跳到第2个台阶的方式数量

  • ...

  • 同理,可得到递推公式:dp[n]=dp[n-1]+dp[n-2]

注:当number确定时,只需要知道number-1和number-2的跳法有多少种,因此不需要将整个过程都用数组存储下来,只需要用两个变量存储临近两个台阶跳法数量,并动态更新变量值即可。

#
# @param number int整型 
# @return int整型
#
class Solution:
    def jumpFloor(self , number: int) -> int:
        # number<=2可直接返回结果
        if number == 1: return 1
        elif number == 2 : return 2
        # number>2时,进行动态规划
        dpStep1,dpStep2 = 1,2
        target = 2
        while target < number:
            temp = dpStep1 + dpStep2
            dpStep1 = dpStep2
            dpStep2 = temp
            target += 1
        return dpStep2
            
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务