Alan Zhan 部落格

Live for nothing, or die for something

70. Climbing Stairs

https://leetcode.com/problems/climbing-stairs/

Easy


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

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

 

Example 1:

Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps

Example 2:

Input: n = 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

 

Constraints:

  • 1 <= n <= 45

題意

你在爬樓梯,一次可以爬一階或兩階,請問你有種爬可以爬完?

解題思路

我們使用動態處理,爬第一階的話,一定是 1 種方法,爬第二階的話,我們可以爬 1 + 1 或者 2 的方式,所以有兩種方法,爬三階的話其實就是第一階與第二階的方法加總,以此類推,就可以推出我們的答案了。

原始碼

func climbStairs(n int) int {
    if (n == 0 || n == 1) {
        return n
    }
    res := make([]int, n + 1)
    res[1] = 1
    res[2] = 2
    for i := 3; i <= n; i++ {
        res[i] = res[i - 1] + res[i - 2]
    }
    return res[n]
}

結尾

你有更好或更簡單的解決方案嗎?

歡迎到我的 Facebook Alan 的筆記本 留言,順手給我個讚吧!你的讚將成為我持續更新的動力,感謝你的閱讀,讓我們一起學習成為更好的自己。