[LeetCode] 509. Fibonacci Number
Posted aaronliu1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 509. Fibonacci Number相关的知识,希望对你有一定的参考价值。
斐波那契数列。题意很简单,求出斐波那契数列里面第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.
迭代
时间O(n)
空间O(1)
1 /** 2 * @param {number} N 3 * @return {number} 4 */ 5 var fib = function(N) { 6 if (N <= 1) { 7 return N; 8 } 9 var a = 0; 10 var b = 1; 11 while (N > 1) { 12 var sum = a + b; 13 a = b; 14 b = sum; 15 N--; 16 } 17 return b; 18 };
递归
时间O(n)
空间O(n)
1 /** 2 * @param {number} N 3 * @return {number} 4 */ 5 var fib = function(N) { 6 if (N <= 1) { 7 return N; 8 } else { 9 return fib(N - 1) + fib(N - 2); 10 } 11 };
动态规划
时间O(n)
空间O(n)
1 /** 2 * @param {number} N 3 * @return {number} 4 */ 5 var fib = function(N) { 6 if (N <= 1) { 7 return N; 8 } 9 let dp = [N + 1]; 10 dp[0] = 0; 11 dp[1] = 1; 12 for (let i = 2; i <= N; i++) { 13 dp[i] = dp[i - 2] + dp[i - 1]; 14 } 15 return dp[N]; 16 };
以上是关于[LeetCode] 509. Fibonacci Number的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 509. Fibonacci Number
LeetCode #509. Fibonacci Number