我需要爲以下目的有一個數據結構。假設我有一個數組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。 –
// @強李:兩個問題。與需要更新的頻率相比,您需要多長時間訪問一次元素?並且:您是否需要以除修剪操作之外的其他方式更改陣列? –