zoukankan      html  css  js  c++  java
  • LeetCode--070--爬楼梯

    problem description:

    假设你正在爬楼梯。需要 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 阶
    分析:Fibonacc

    方法1:(time out)
    1 class Solution:
    2     def climbStairs(self, n):
    3         """
    4         :type n: int
    5         :rtype: int
    6         """
    7         if n == 0 or n == 1:
    8             return 1
    9         return self.climbStairs(n-1) + self.climbStairs(n-2)

    方法2:

     1 class Solution:
     2     def climbStairs(self, n):
     3         """
     4         :type n: int
     5         :rtype: int
     6         """
     7         if n <= 1:
     8             return 1
     9         ans = 1
    10         i = 1
    11         pre = 1
    12         ppre = 1
    13         while i <= n-1:
    14             i += 1
    15             tmp = pre
    16             pre = pre + ppre
    17             ppre = tmp
    18         return pre

    方法3:

     1 class Solution:
     2     def climbStairs(self, n):
     3         """
     4         :type n: int
     5         :rtype: int
     6         """
     7         result = [0]*n
     8         if n ==1:
     9             return 1
    10         if n == 2:
    11             return 2
    12         
    13         result[0] = 1
    14         result[1] = 2
    15         
    16         for i in range(2, n):
    17             result[i] = result[i-1] + result[i-2]
    18             
    19         return result[-1]
    2018-09-02 16:59:39
  • 相关阅读:
    P1092 虫食算
    P1040 加分二叉树
    cfER76 abcd
    cf599 div2 a/b1/b2/c
    AtCoder Contest 144 DE
    Round G 2019
    luogu3084 Photo 单调队列优化DP
    luogu4234 最小差值生成树
    luogu1373 小a和uim之大逃离
    luogu1070 道路游戏 单调队列
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/9574402.html
Copyright © 2011-2022 走看看