LeetCode,Go 實現爬樓梯算法

力扣題目:

假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?

LeetCode 題目源地址:https://leetcode-cn.com/problems/climbing-stairs/

解題思路

我們先列舉幾個例子:

可見, 如果有 n 級臺階,那麼方法就是前兩級臺階的方法之和,即 (n-1) + (n-2)

程序實現

  1. 遞歸

首先想到的方法就是遞歸了

func climbStairs(n int) int {
    if n == 1 {
        return 1
    }
    if n==2{
        return 2
    }
    return climbStairs(n-1) + climbStairs(n-2)
}
  1. 動態規劃方法:
func climbStairs(n int) int {
    if n == 1 {
        return 1
    }
    if n==2{
        return 2
    }
    a := 1
    b := 2
    for i:= 3; i <= n; i++{
        temp := a
        a = b
        b = temp + a
    }
    return b
}

 有什麼問題,可以公衆號內回覆或加我微信交流。

微信公衆號

gophpython

我的微信

wucs_dd

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/FYVHHzAx_3Ov9BY2vSuTIA