您的位置:首页 > 大数据 > 人工智能

[leetcode]#70. Climbing Stairs

2017-11-20 19:09 369 查看
题目翻译

你现在在爬楼梯,爬到顶要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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode