当前位置: 首页 > article >正文

《征服数据结构》滚动数组

摘要:

1,一维滚动数组的介绍

2,多维滚动数组的介绍

1,一维滚动数组的介绍

滚动数组不是一种数据结构,它是一种算法优化思想,滚动数组的作用在于优化空间,降低空间复杂度,每次使用固定的一些存储空间。

比如我们常见的斐波那契数列:f[n] = f[n – 1] + f[n – 2] ,普通的写法如下:

Java 代码:

// 1、2、3、5、8、13、21、34、……
private int fibonacci(int n) {// n > 0
    if (n == 1 || n == 2)
        return n;
    int[] res = new int[n + 1];
    res[0] = 1;
    res[1] = 2;
    for (int i = 2; i <= n; i++)
        res[i] = res[i - 1] + res[i - 2];
    return res[n];
}

C++ 代码:

public:
    // 1、2、3、5、8、13、21、34、……
    int fibonacci(int n) {// n > 0
        if (n == 1 || n == 2)
            return n;
        vector<int> res(n + 1);
        res[0] = 1;
        res[1] = 2;
        for (int i = 2; i <= n; i++)
            res[i] = res[i - 1] + res[i - 2];
        return res[n];
    }

如下图所示,虽然定义一个很长的数组,但每次都用最近的 3 个,前面的都浪费了,所以我们可以使用滚动数组,只需要一个长度为 3 的数组即可。

ea1f51d096c421621c08de92fcbc0c84.png

Java 代码:


http://www.kler.cn/news/303394.html

相关文章:

  • uni-app生命周期(三)
  • 基于vue框架的城市网约车管理系统v34td(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 民间故事推广系统小程序的设计
  • PMP--一模--解题--41-50
  • 初级练习[3]:Hive SQL子查询应用
  • 其它查询优化策略
  • 基于SSM的大学新生报到系统+LW参考示例
  • Vue3实现打印功能
  • 数据结构---非线性--树
  • prometheus 集成 grafana 保姆级别安装部署
  • 数据结构与算法 第12天(排序)
  • 字符分类函数和字符串函数
  • 【PostgreSQL数据库表膨胀的一些原因】
  • springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
  • 2024121读书笔记|《不急:我们慢慢慢慢来》——做人呢,最重要的是开心
  • 从底层原理上理解ClickHouse 中的 Distributed 引擎
  • tomcat项目报错org.apache.jasper.JasperException: java.lang.NullPointerException
  • Python中的“异常”之旅:探索异常处理的艺术
  • 大语言模型之ICL(上下文学习) - In-Context Learning Creates Task Vectors
  • 用于安全研究的 Elastic Container Project
  • Java 行为型设计模式一口气讲完!*^____^*
  • Spring Cloud 搭建 Gateway 网关与统一登录模块:路径重写、登录拦截、跨域配置
  • 使用Jenkins扩展钉钉消息通知
  • 根据NVeloDocx Word模板引擎生成Word(五)
  • 9.12 TFTP通信
  • 阿里巴巴拍立淘API:实时图像搜索与快速响应的技术探索
  • Pycharm Remote Development 报错解决
  • 【机器学习(三)】分类和回归任务-随机森林-Sentosa_DSML社区版
  • 【数据库】死锁排查方式
  • iPhone 16分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 16 Plus、iPhone 16 Pro、iPhone 16 Pro Max