解题思路:
时间复杂度:O(n)
空间复杂度:O(n)
1.用一个数组存放中间子问题的结果:
func climbStairs(n int) int {
dp:=make([]int,n+1)
dp[0]=1
dp[1]=1
for i:=2;i<len(dp);i++{
dp[i]=dp[i-2]+dp[i-1]
}
return dp[n]
}
2.压缩空间,优化:
用两个变量存两个过去的状态
func climbStairs(n int) int {
prev:=1
cur:=1
for i:=2;i<n+1;i++{
temp:=cur
cur=prev+cur
prev=temp
}
return cur
}