爬楼梯

Posted Efve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬楼梯相关的知识,希望对你有一定的参考价值。

中英题面

  你正在爬楼梯。距离顶部还有 n 台阶。

  You are climbing a stair case. It takes n steps to reach to the top.

  每次你可以爬 1 或 2 个台阶。你有多少种不同的方式可以爬到楼顶呢?

  Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

  注意:给定 n 将是一个正整数。

  Note: Given n will be a positive integer.

 

  示例 1:

  输入: 2
  输出: 2
  说明: 有两种方法可以爬到顶端。

  1.  1 步 + 1 步
  2.  2 步

  Example 1:

  Input: 2
  Output:  2
  Explanation:  There are two ways to climb to the top.

  1. 1 step + 1 step
  2. 2 steps

 

  示例 2:

  输入: 3
  输出: 3
  说明: 有三种方法可以爬到顶端。

  1.  1 步 + 1 步 + 1 步
  2.  1 步 + 2 步
  3.  2 步 + 1 步

  Example 2:

  Input: 3
  Output:  3
  Explanation:  There are three ways to climb to the top.

  1. 1 step + 1 step + 1 step
  2. 1 step + 2 steps
  3. 2 steps + 1 step

 

 

 

题目解读
  设 f[i] 表示上 i 级台阶的方案数,显然 f[0] = f[1] = 1,而当 i > 1 时,f[i] = f[i - 1](走一个台阶) + f[i - 2](走两个台阶),因此所求答案即为斐波那契数列的 N - 1 项。

 

算法
  使用递推公式直接迭代计算斐波那契数列,算法时间复杂度 O(N)。
 
代码
 1 class Solution:
 2     def climbStairs(self, n):
 3         """
 4         :type n: int
 5         :rtype: int
 6         """
 7         x = 0
 8         y = 1
 9         for i in range(n):
10             x += y
11             x, y = y, x
12         return y

以上是关于爬楼梯的主要内容,如果未能解决你的问题,请参考以下文章

爬楼梯

代码随想录算法训练营第三十八天 | 理论基础 ,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

代码随想录算法训练营第三十八天 | 509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯

[LeetCode] 70. 爬楼梯

爬楼梯算法

代码随想录|day38|动态规划part01● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯