366. 斐波纳契数列
查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
- 前2个数是 0 和 1 。
- 第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
样例
给定 1
,返回 0
给定 2
,返回 1
给定 10
,返回 34
// https://www.lintcode.com/problem/fibonacci/description?_from=ladder&&fromId=6
class Solution {
public:
/**
* @param n: an integer
* @return: an ineger f(n)
*/
int fibonacci(int n) {
// write your code here
if(n<2) return 0;
if(n<3) return 1;
/*
std::vector<int> dp(n+1,0);
dp[1]=1;
for(int i=2;i<n;i++)
{
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n-1];
*/
int pre=1;
int last=0;
int now=1;
for(int i=2;i<n;i++)
{
pre=now;
now=pre+last;
last=pre;
}
return now;
}
};
class Solution:
"""
@param n: an integer
@return: an ineger f(n)
"""
def fibonacci(self, n):
# write your code here
if n<2:
return 0
if n<3:
return 1
pre=1
last=0
now=pre+last
for i in range(2,n):
pre=now
now=pre+last
last=pre
return now