我用算法学golang(爬楼梯)

本系列文章帮助想要一起go的同学,欢迎一起创(ban)作(yun)

题目详情

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

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

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

  • 示例1
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1+ 12.  2
  • 示例2
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1.  1+ 1+ 12.  1+ 23.  2+ 1

思路分析

  • 台阶数为 1 只有1种上法
  • 台阶数为 2 只有2种上法 (从台阶0到台阶2;从台阶1到台阶2)
  • 台阶数为 3 只有2种上法 (从台阶1到台阶3;从台阶2到台阶3)
  • 台阶数为 n 只有2种上法 (从台阶n-2到台阶n;从台阶n-1到台阶n

不管有多少台阶 最后一个台阶只有两种上法即

dp(n) = dp(n-1) + dp(n-2)

我的解答

func climbStairs(n int) int {

    if n < 3{
        return n
    }
     dp := make([]int,50)
     dp[1] = 1
     dp[2] = 2
    for i := 3;i<=n;i++{
        dp[i] = dp[i-1] + dp[i-2]
    } 
    return dp[n]
}

学到了

go基础数据类型与控制语句

疑问反思

这里边有一个疑问 一开始在我声明切片时定义的len 为10;然后提交时会有一个溢出报错;由于测试的最大值是45 所以这里定义的冷为50通过了 ;但是切片不是可以动态改变自己的cap吗???

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!