剑指 Offer 10- I. 斐波那契数列
//滚动数组法,时间On,空间O1
func fib(n int) int {
if n <= 1 {
return n
}
prev , cur := 0, 1
for i := 2; i <= n; i++ {
temp := (prev + cur) %1000000007
prev = cur
cur = temp
}
return cur //返回cur 而不是temp,不需要初始化temp
}
//时空都是On的解法
func fib(n int) int {
if n <= 1 {
return n
}
dp := make([]int, n +1)
dp[0] , dp[1] = 0, 1
for i := 2; i <= n; i++ {
dp[i] = (dp[i-1] + dp[i-2]) %1000000007
}
return dp[n]
}