我需要为以下目的有一个数据结构。假设我有一个数组a
。最初所有元素都设置为零。无论何时我要更新位置p
上正数值new_value
中的一个元素,如果位置p
old_value
上的原始值不为零并且大于new_value
,那么我需要更新从位置p
开始的所有非零元素一直到数组的末尾。这里的更新意味着将该位置的旧值与new_value
之间的较小值重新设置。用于修整数组中较大值的数据结构?
例如,该阵列是: [2, 0, 3, 0, 2, 1, 5, 0, 4, 0, 7]
鉴于4对于具有一个旧值3
位置2
(从0
开始)的新值,我需要更新所述阵列为:
[2, 0, 3, 0, 2, 1, 4, 0, 4, 0, 4]
如果在位置2的新值是1,则所得到的数组是:
[2, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1]
有没有已知的数据结构可以有效地做到这一点?我需要很多这样的更新操作。
谢谢您的建议。
数组中的值有多大? –
@izomorphius:这件事吗?一般可以是LONG_MAX。 –
// @强李:两个问题。与需要更新的频率相比,您需要多长时间访问一次元素?并且:您是否需要以除修剪操作之外的其他方式更改阵列? –