题解 | #跳台阶#
跳台阶
http://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
迭代:空间占用过多
# -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): if number <= 2: return number else: dp = [0]*(number+1) dp[0] = 0 dp[1] = 1 dp[2] = 2 for i in range(3,number+1): dp[i] = dp[i-1] + dp[i-2] return dp[number]
减少空间:只用两个变量来存
# -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): if number <= 2: return number else: pre1, pre2 = 1, 2 for i in range(3,number+1): cur = pre1 + pre2 pre1 = pre2 pre2 = cur return pre2
递归:n很大时超时
# -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): if number <= 2: return number else: return self.jumpFloor(number-1) + self.jumpFloor(number-2)