70.爬楼梯

2024/3/29

# Heading

    70.爬楼梯 (opens new window)

    Tags: algorithms adobe apple dynamic-programming

    Langs: c cpp csharp dart elixir erlang golang java javascript kotlin php python python3 racket ruby rust scala swift typescript

    • algorithms
    • Easy (54.41%)
    • Likes: 3481
    • Dislikes: -
    • Total Accepted: 1.4M
    • Total Submissions: 2.6M
    • Testcase Example: '2'

    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

    每次你可以爬 12 个台阶。你有多少种不同的方法可以爬到楼顶呢?

     

    示例 1:

    输入:n = 2
    输出:2
    解释:有两种方法可以爬到楼顶。
    1. 1 阶 + 1 阶
    2. 2 阶

    示例 2:

    输入:n = 3
    输出:3
    解释:有三种方法可以爬到楼顶。
    1. 1 阶 + 1 阶 + 1 阶
    2. 1 阶 + 2 阶
    3. 2 阶 + 1 阶
    

     

    提示:

    • 1 <= n <= 45
    /*
     * @lc app=leetcode.cn id=70 lang=javascript
     *
     * [70] 爬楼梯
     * 动态规划 数组
     */
    
    // @lc code=start
    /**
     * @param {number} n
     * @return {number}
     */
    var climbStairs = function (n) {
      const dp = [null, 1, 2]
      for (let i = 3; i <= n; i++) {
        dp[i] = dp[i - 1] + dp[i - 2]
      }
      return dp[n]
    }
    // @lc code=end
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    /*
     * @lc app=leetcode.cn id=70 lang=javascript
     *
     * [70] 爬楼梯
     * 动态规划 迭代
     */
    
    // @lc code=start
    /**
     * @param {number} n
     * @return {number}
     */
    var climbStairs = function (n) {
      if (n === 1) {
        return 1
      } else if (n === 2) {
        return 2
      }
    
      let first = 1
      let second = 2
      result = 0
      for (let i = 3; i <= n; i++) {
        result = first + second
        first = second
        second = result
      }
      return result
    }
    // @lc code=end
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30