1.基本的动态规划问题,对于第n级台阶来说,有2种方法,1是到第n-1级,然后爬一个台阶;2是到第n-2个台阶,然后爬2个台阶,可以得出动态规划递推式:
这不是菲波那切数列嘛,上我自己的代码:
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
A = [1,2]
for i in range(n-2):
A.append(A[-1]+A[-2])
if n==1:
return 1
if n==2:
return 2
else:
return A[-1]
运行时间为24ms,不是最快的
最快的是4ms,上代码:
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
a, b = 1, 1
while n > 0:
a, b = b, a + b
n -= 1
return a
a,b相当于指针一样,循环地往前移动并记录前后两项之和。