我用算法学golang(爬楼梯)
本系列文章帮助想要一起go的同学,欢迎一起创(ban)作(yun)
题目详情
假设你正在爬楼梯。需要 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 阶
思路分析
- 台阶数为 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 协议》,转载必须注明作者和本文链接
推荐文章: