标签:pre 循环 range 多少 方法 楼梯 描述 div 一个
一、假设你正在爬楼梯。需要 n 阶你才能到达楼顶
题目描述:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
class Solution: def climbStairs(self, n): """ :type n: int :rtype: int """ if n < 0: return 0 if n == 1 : return 1 elif n == 2 : return 2 else: return self.climbStairs(n-1) + self.climbStairs(n-2) #递归是很耗时的
两种方法,一种是递归,一种是循环。递归的写法简单但性能消耗大,循环的写法也很简单,但性能比递归好太多:
通过分析,结果序列是:1 2 3 5 8 13 21 ......
class Solution: def climbStairs(self, n): """ :type n: int :rtype: int """ if n < 0: return 0 if n == 1 : return 1 elif n == 2 : return 2 else: a = 1 b = 2 for k in range(3, n+1): result = a + b a = b b = result return result
标签:pre 循环 range 多少 方法 楼梯 描述 div 一个
原文地址:https://www.cnblogs.com/always-fight/p/10283352.html