浅谈:算法中的斐波那契数(三)

方法二:记忆化自底向上的方法

自底向上通过迭代计算斐波那契数的子问题并存储已计算的值,通过已计算的值进行计算。减少递归带来的重复计算。

算法

  • 如果 N 小于等于 1,则返回 N。
  • 迭代 N,将计算出的答案存储在数组中。
  • 使用数组前面的两个斐波那契数计算当前的斐波那契数。
  • 知道我们计算到 N,则返回它的斐波那契数。

Java 实现

复制代码
class Solution {
    public int fib(int N) {
        if (N <= 1) {
            return N;
        }
        return memoize(N);
    }

    public int memoize(int N) {
      int[] cache = new int[N + 1];
      cache[1] = 1;

      for (int i = 2; i <= N; i++) {
          cache[i] = cache[i-1] + cache[i-2];
      }
      return cache[N];
    }
}

Python 实现

复制代码
class Solution:
    def fib(self, N: int) -> int:
        if N <= 1:
            return N
        return self.memoize(N)

    def memoize(self, N: int) -> {}:
        cache = {0: 0, 1: 1}

        # Since range is exclusive and we want to include N, we need to put N+1.
        for i in range(2, N+1):
            cache[i] = cache[i-1] + cache[i-2]

        return cache[N]
相关推荐
2301_800895101 分钟前
hh的蓝桥杯每日一题
算法·职场和发展·蓝桥杯
老鱼说AI6 分钟前
现代计算机系统1.2:程序的生命周期从 C/C++ 到 Rust
c语言·c++·算法
仰泳的熊猫9 分钟前
题目1099:校门外的树
数据结构·c++·算法·蓝桥杯
求梦82012 分钟前
【力扣hot100题】反转链表(18)
算法·leetcode·职场和发展
NAGNIP24 分钟前
机器学习特征工程中的特征选择
算法·面试
l1t30 分钟前
DeepSeek辅助编写的利用位掩码填充唯一候选数方法求解数独SQL
数据库·sql·算法·postgresql
Z1Jxxx34 分钟前
反序数反序数
数据结构·c++·算法
副露のmagic35 分钟前
更弱智的算法学习 day25
python·学习·算法
求梦82036 分钟前
【力扣hot100题】移动零(1)
算法·leetcode·职场和发展
NAGNIP39 分钟前
机器学习中的数据预处理方法大全!
算法·面试