C++滚动数组(优化空间)

滚动数组是一种在时间充足而空间有限的情况下,通过数组值的交换来节省空间的策略,常见于动态规划和递推问题。以斐波那契数列为例子,通常需要num[N]数组,但通过滚动数组优化,只需num[3]即可,通过不断更新数组元素位置,如num[0] = num[1] + num[2],num[2] = num[1],num[1] = num[0],达到空间优化的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

滚动数组简介

滚动数组顾名思义就是让数组滚起来,是一种用时间去换空间的想法,往往在时间充足,空间超限的情况下适用。

滚动数组基本上都是在动态规划DP和递推中使用,大部分都是通过数组中的值结合其他的数更新数组中的某一位,之后在数组中交换数值的位置,再更新下一位。

滚动数组应用实例

就以斐波那契数列为例
斐波那契数列:1,1,2,3,5,8,13,21……

如果我们要求第i位的数值,往往都会用num[i] = num[i - 1] + num[i - 2]。这样就要开一个num[N]的数组了。可是如果运用了滚动数组的优化,就只用开num[3]了,每次让num[0] = num[1] + num[2]之后再让num[2] = num[1],num[1] = num[0]就OK了。这样就大大优化了空间。

以下为斐波那契数列滚动数组优化了的代码

# include <cstdio>
# include <iostream>
# include <cmath>
# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值