一、题目描述
区块链底层存储是一个链式文件系统,由顺序的N个文件组成,每个文件的大小不一,依次为F1,F2…Fn。
随着时间的推移,所占存储会越来越大。
云平台考虑将区块链按文件转储到廉价的SATA盘,只有连续的区块链文件才能转储到SATA盘上,且转储的文件之和不能超过SATA盘的容量。
假设每块SATA盘容量为M,求能转储的最大连续文件大小之和。
二、输入描述
第一行为SATA盘容量M,1000<=M<=1000000
第二行为区块链文件大小序列F1,F2…Fn。其中 1<=n<=100000, 1<=Fi<=500
三、输出描述
求能转储的最大连续文件大小之和
四、解题思路
- 使用双指针法遍历文件序列arr,通过移动指针来找到能转储的最大连续文件大小之和;
- 将当前文件大小加到curr上;
- 如果curr小于等于M,更新ret为curr和ret中的较大值,右指针r向右移动一位;
- 如果curr大于M,说明当前连续文件大小之和超过了SATA盘容量,需要调整边界来找到新的连续文件;