春招刷题 - 509. 斐波那契数

82 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

509. 斐波那契数 - 力扣(LeetCode) (leetcode-cn.com)

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0F(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

二、思路分析:

  1. 分析:一个数等于它前面的两个数之和,于是我们可以创建一个动态数组;
  2. 起始:数组依次添加0和1;
  3. 排除掉特殊情况,循环从2开始;
  4. 这样一轮循环下来,所有的结果都保存在了数组中,无论我们想要取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是递归最经典的一道题,正常我们都知道用递归来处理

范文参考

斐波那契数列——DP - 斐波那契数 - 力扣(LeetCode) (leetcode-cn.com)