[leetcode]#70. Climbing Stairs

来源:互联网 发布:phpstudy怎么配置域名 编辑:程序博客网 时间:2024/05/16 10:27
  • 题目翻译
    你现在在爬楼梯,爬到顶要n阶。每次你可以爬1或2阶楼梯,你有多少种不同的爬法可以到顶?
  • 其实是斐波那契数列
class Solution(object):    def climbStairs(self, n):        """        :type n: int        :rtype: int        """        pre = cur = 1        for i in xrange(1, n):            pre, cur = cur, pre+cur        return cur
  • 动态规划
    当有n个台阶时,可供选择的走法可以分两类:
    1,先跨一阶再跨完剩下n-1阶;
    2,先跨2阶再跨完剩下n-2阶。所以n阶的不同走法的数目是n-1阶和n-2阶的走法数的和。
    这个时候如果用递归,复杂度会太大而无法AC,所以用动态规划记录历史数据,即可
class Solution(object):    def climbStairs(self, n):        """        :type n: int        :rtype: int        """        if n == 0 or n == 1 or n == 2:            return n        steps = [1, 1]        for i in xrange(2, n+1):            steps.append(steps[i-1] + steps[i-2])        return steps[n]
原创粉丝点击