滚动数组
- 滚动数组是基于二维数组之上产生的,之所以滚动数组能够用一维的方式去完成和二维同样的工作,原因就是在于这个滚动数组能够重复产生数据,进而有“滚动”的效果。
- 滚动数组的本质还是二维数组,只是数据不再产生新的行,只在一行上一直进行数据的覆盖更新,因此要特别注意数据污染的情况。
下面就数据污染问题,以01背包做出解释
看下面一段01背包遍历代码
从代码中,我们可以看出,由于背包容量j是从小到大遍历的,那么就会导致存在一种可能:容量较小的背包A,放了某一物体a,后面容量较大的背包B,再利用了前面的背包A,同时又放入了物体a,这就违背了01背包的前提条件。图示如下:

因此,为了避免滚动数组造成的数据污染问题,要逆序遍历背包容量j。
Last update: 2024-4-5
🎉此博客仅为本人记录生活,技术交流所用🎉
-- 如有侵权,请与我联系 ---
-- 感谢您的支持😁 ---