题目(Java题解)
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。
示例
input: 4 output: 3
解题思路
看到这种简单的问题切忌上来提笔就写,首先需要判断的是,是否存在越界问题,其次要考虑最优解,显然对于这个老生常谈的递归问题很多人可以得到一个解决方案,但是如何对已有的方案进行优化你也应该了然如心,无论是剪枝抑或是通过额外空间存储数据的方式。
时间复杂度:
基本解:O(N^2)
dp解:O(N)
实例代码
基本解
public class Solution { public int Fibonacci(int n) { if(n == 0 || n == 1){ return n; } return Fibonacci(n - 1) + Fibonacci(n - 2); } }dp解
public class Solution { public int Fibonacci(int n) { int a = 0; int b = 1; for(int i = 2; i <= n; i++){ int sum = a + b; a = b; b = sum; } return sum; } }