[Golang]力扣Leetcode—初级算法—动态规划—爬楼梯(斐波那契数列)
题目:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
链接: 力扣Leetcode—初级算法—动态规划—爬楼梯.
示例1 :
输入:n = 2【[Golang]力扣Leetcode—初级算法—动态规划—爬楼梯(斐波那契数列)】示例2 :
输出:2
解释:有两种方法可以爬到楼顶。
(1) 1 阶 + 1 阶
(2) 2 阶
输入:n = 3标签:记忆化搜索、数学、动态规划
输出:3
解释:有三种方法可以爬到楼顶。
(1) 1 阶 + 1 阶 + 1 阶
(2) 1 阶 + 2 阶
(3) 2 阶 + 1 阶
思路:我们先来画一个表格,这样可以更容易的看出解题思路
n | 方法 | 总和 |
---|---|---|
1 | 1 | 1 |
2 | 1+12 | 2 |
3 | 1+1+11+22+1 | 3 |
4 | 1+1+1+11+2+11+1+22+1+12+2 | 5 |
5 | 1+1+1+1+11+2+1+11+1+2+11+1+1+22+1+1+11+2+22+1+22+2+1 | 8 |
... | ... | ... |
主要Go代码如下:
package mainimport "fmt"// fibonacci数列(斐波那契数列)
func climbStairs(n int) int {
sli := []int{1, 2, 3}
if n <= 3 {
return sli[n-1]
}
for i := 3;
i < n;
i++ {
sli = append(sli, sli[i-1]+sli[i-2])
}
return sli[len(sli)-1]
}func main() {
n := 5
fmt.Println(climbStairs(n))
}
提交截图:
文章图片
推荐阅读
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters
- 三门问题(蒙提霍尔悖论)分析与Golang模拟
- Leetcode|Leetcode No.198打家劫舍
- [leetcode数组系列]1两数之和
- golang锁竞争性能
- 数据结构与算法|【算法】力扣第 266场周赛