算法—leetcode—70.爬楼梯

948 阅读1分钟

题目

70.爬楼梯

题目描述

假设你正在爬楼梯;需要n阶你才能达到楼顶。
每次你可以爬1或者2个台阶,你有多少种不同的方法可以爬到楼顶呢?

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

正整数定义

正整数,为大于0的整数,也是正数与整数的交集。

案例

示例一

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1 阶 + 12.  2

示例二

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

思路

动态规划思路 base case : dp[1] = 1 dp[2] = 2
状态转移:dp[i] = dp[i-1] + dp[i-2]
结果:dp[n]

代码

package leetcode

// climbStairs
// 70.爬楼梯
func climbStairs(n int) int {
	// n 为正整数
	if n < 2 {
		return 1
	}
	dp := make([]int, n+1)
	// base case
	dp[1] = 1
	dp[2] = 2
	// 状态转移
	for i := 3; i <= n; i++ {
		dp[i] = dp[i-1] + dp[i-2]
	}
	return dp[n]
}

参考