题目
代码实现:
func climbStairs(n int) int {
if n == 1||n == 2{
return n
}
var temp = make(map[int]int)
temp[0] = 1
temp[1] = 2
for i := 2; i < n; i++ {
temp[i] = temp[i-1] + temp[i-2]
}
return temp[n-1]
}
解题思路:最终的方法数=到前一步的方法数+到前两步的方法数,也就是temp[i] = temp[i-1] + temp[i-2]。可以暴力递归(进一步优化可以递归+记忆化)也可使用动态规划求解。代码使用动态规划实现。