我正在寻找一种非常高效的想法、概念或数据结构,用于访问保持累积值的集合。
举个例子来说明我的需求:
我有一个值列表(2,3,5)。这个列表在观察累加值时是(2,5,10)。
现在我在列表开头添加1并得到(1,2,3,5),在累积方面是(1,3,6,11)。
我只需要查看累积值,对1、2、3和5不感兴趣。我需要能够快速插入位置、删除位置,并且所有这些操作都可以快速更新累积数组(最好不需要遍历整个数组并重新计算值)。
有什么想法或提示吗?
@Kristo (评论中写不下): 为了说明负数会使总和值失去意义,请看以下示例。
插入1,然后是-1。和是1,然后是0。(1,-1)//(1,0) 插入3,接着插入-3。和是3,然后是0。(1,3,-1,-3)//(1,4,3,0) 插入2,接着插入-2。和是2,然后是0。(1,3,2,-1,-2,-3)//(1,4,6,5,3,0)
如果我的"魔数"是4,总和值将不能告诉我是否超过了它。
PS: 主要原因是为了能够判断我是否超过了某个值以及在链中的哪个位置。