剑指offer刷题-变态跳台阶问题

版权声明:虽然本文为博主原创文章,不过随便转载,但必须留下出处。 https://blog.csdn.net/Fighting_Dreamer/article/details/82927903

时间限制:1秒 空间限制:32768K 热度指数:244626
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。。

题目分析

依旧从简单到复杂
结果数满足一个公式,从简单的开始推导结果。

台阶数 n 结果数 f(n)
0 0
1 1
2 2
3 4
4 8
5 16
n f(n) = 2 x f(n-1)

下面是代码实现,当n<=2时,返回定义好的数组,当大于2时,开始进行循环计算。相比于递归算法,时间复杂度要小,因为每次计算的结果都保存了下来。

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
        re = [0,1,2]
        if number<=2 :
            return re[number]
        else:
            for i in range(3,number+1):
                re.append(2 * re[i-1])
            return re[number]

猜你喜欢

转载自blog.csdn.net/Fighting_Dreamer/article/details/82927903
今日推荐