地址:
我的第一思路是用排序的方法做,但是考虑了很多种情况
# ret = 0
# if n == 0:
# return 0
# for m in range(0,n+1):
# if (n-m) % 2 == 0:
# temp = (n-m) / 2
# if temp >0:
# ret += temp+m
# else:
# ret += 1
# return ret
首选想到根据1和2的个数来进行排序,然后发现并不是全排列而且,选择排序不太好写,所以换了一种思路,看能不能用递归的方法
结果百度了下就是斐波那数列,考虑到递归的方法会超时,所以用不递归的方法
我的答案:
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 1:
return n
a = m = 0
b = 1
while m < n:
a,b = b, a+b
m += 1
return b