Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
509. 斐波那契数 - 力扣(LeetCode) (leetcode-cn.com)
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
示例 1:
输入:n = 2
输出:1
解释:F(2) = F(1) + F(0) = 1 + 0 = 1
示例 2:
输入:n = 3
输出:2
解释:F(3) = F(2) + F(1) = 1 + 1 = 2
示例 3:
输入:n = 4
输出:3
解释:F(4) = F(3) + F(2) = 2 + 1 = 3
提示:
- 0 <= n <= 30
二、思路分析:
- 分析:一个数等于它前面的两个数之和,于是我们可以创建一个动态数组;
- 起始:数组依次添加0和1;
- 排除掉特殊情况,循环从2开始;
- 这样一轮循环下来,所有的结果都保存在了数组中,无论我们想要取N = ? 的值,只要调用get函数即可;
三、AC 代码:
class Solution {
public int fib(int N) {
if(N <= 1)
return N;
return fibs(N);
}
public int fibs(int N){
List<Integer> ans = new ArrayList<>();
ans.add(0);
ans.add(1);
for(int i = 2;i <= N;i++){
ans.add(ans.get(i - 1) + ans.get(i - 2));
}
return ans.get(N);
}
}
四、总结:
Fibonacci是递归最经典的一道题,正常我们都知道用递归来处理
范文参考: