LeetCode 70. Climbing Stairs

简介: 你正在爬楼梯。 它需要n步才能达到顶峰。每次你可以爬1或2步。 您可以通过多少不同的方式登顶?注意:给定n将是一个正整数。

v2-0fd74b97487451ecc6ee47f77213e5fd_1440w.jpg

Description



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

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


Note: Given n will be a positive integer.


Example 1:


Input: 2 Output: 2

Explanation: There are two ways to climb to the top.

  1. 1 step + 1 step
  2. 2 steps


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


描述



你正在爬楼梯。 它需要n步才能达到顶峰。

每次你可以爬1或2步。 您可以通过多少不同的方式登顶?

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


思路



  • 题意是一个有n层的楼梯,每一次可以往上走1步或者2步,问走到楼顶一共有多少种方法.
  • 对于楼梯的每一个位置,到达当前位置的上一步只有两种可能,即:来自前面一层楼梯或者前面两层楼梯.

Steps[i] = Steps[i-1] + Steps[i-2]Steps[i]=Steps[i−1]+Steps[i−2]

  • 我们初始化Steps[1] = 1,Steps[2] = 1,当前层totoal = preone + pretwo,更新preone = total,pretwo = preone 即可.


class Solution:
    def climbStairs(self, n):
        """
        :type n: int
        :rtype: int
        """
        # 如果只有一层,返回1
        if n == 1:
            return 1
        # 如果有两层,返回2
        if n == 2:
            return 2
        total, preone, pretwo = 0, 2, 1
        # 循环遍历,到达当前的层数的路径数 = 前一层的路径数+前两层的路径数
        for _ in range(3, n+1):
            total = preone + pretwo
            pretwo, preone = preone, total
        return total


源代码文件在这里.


目录
相关文章
LeetCode 70. 爬楼梯 Climbing Stairs
LeetCode 70. 爬楼梯 Climbing Stairs
Leetcode-Easy 70. Climbing Stairs
Leetcode-Easy 70. Climbing Stairs
103 0
Leetcode-Easy 70. Climbing Stairs
|
算法 移动开发
[LeetCode]--70. Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 这是一个很经典的爬楼梯问题,面试也会经常遇
1163 0
LeetCode 70 Climbing Stairs(爬楼梯)(动态规划)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50514606 翻译 你正在爬一个楼梯。
934 0
|
C++ Python
[LeetCode] Climbing Stairs
Note: If you feel unwilling to read the long codes, just take the idea with you. The codes are unnecessarily long due to the inconvenient handle of matrices.
715 0
|
算法 Python
leetcode 70 Climbing Stairs
 Climbing Stairs                       You are climbing a stair case. It takes n steps to reach to the top.
1128 0
|
机器学习/深度学习
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
4月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
125 2