Fibonacci Number LT509
Posted taste-it-own-it-love-it
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fibonacci Number LT509相关的知识,希望对你有一定的参考价值。
The Fibonacci numbers, commonly denoted F(n)
form a sequence, called the Fibonacci sequence, such that each number is the sum of the two preceding ones, starting from 0
and 1
. That is,
F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), for N > 1.
Given N
, calculate F(N)
.
Example 1:
Input: 2 Output: 1 Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.
Example 2:
Input: 3 Output: 2 Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.
Example 3:
Input: 4 Output: 3 Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3.
Note:
0 ≤ N
≤ 30.
Idea 1. dynamic programming, 经典的入门dp,
dp[i] = dp[i-2] + dp[i-1] (i >= 2)
Time complexity: O(n)
Space complexity: O(n)
1 class Solution { 2 public int fib(int N) { 3 if(N <= 1) { 4 return N; 5 } 6 7 int[] dp = new int[N+1]; 8 dp[0] = 0; 9 dp[1] = 1; 10 11 for(int i = 2; i <= N; ++i) { 12 dp[i] = dp[i-1] + dp[i-2]; 13 } 14 15 return dp[N]; 16 } 17 }
Idea 1.b, 从上面的公式可以看出只需要前2位dp[i-2] and dp[i-1], 可以不用array dp[].
Time complxity: O(n)
Space complexity: O(1)
1 class Solution { 2 public int fib(int N) { 3 int first = 0; 4 int second = 1; 5 int result = N; 6 7 for(int i = 2; i <= N; ++i) { 8 result = first + second; 9 first = second; 10 second = result; 11 } 12 13 return result; 14 } 15 }
以上是关于Fibonacci Number LT509的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 509. Fibonacci Number
[LeetCode] 509. Fibonacci Number
[LeetCode] 509. Fibonacci Number