当前位置: 首页 > 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/a/303394.html

相关文章:

  • React Hooks在现代前端开发中的应用
  • 华为大变革?仓颉编程语言会代替ArkTS吗?
  • 基于碎纸片的拼接复原算法及MATLAB实现
  • 解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url
  • 深入理解接口测试:实用指南与最佳实践5.0(三)
  • C++单例模式实现
  • 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