Array prefix sum nyimpen total kumulatif supaya bisa menjawab range sum apa wae ing O(1) sawise preprocessing O(n) — ora O(n) per query.
Ideya
Misale iku sum saka elemen pisanan. Banjur sum saka iku .
Array prefix sum nyimpen total kumulatif supaya bisa menjawab range sum apa wae ing O(1) sawise preprocessing O(n) — ora O(n) per query.
Misale iku sum saka elemen pisanan. Banjur sum saka iku .
prefix[i]iarr[l..r]prefix[r+1] - prefix[l]def build_prefix(arr):
prefix = [0] * (len(arr) + 1)
for i, x in enumerate(arr):
prefix[i + 1] = prefix[i] + x # running total
return prefix
def range_sum(prefix, l, r): # inclusive l..r
return prefix[r + 1] - prefix[l] # O(1)
p = build_prefix([2, 4, 1, 3, 5])
range_sum(p, 1, 3) # 4+1+3 -> 8
arr = [2, 4, 1, 3, 5]
prefix = [0, 2, 6, 7, 10, 15]
sum(1..3) = prefix[4] - prefix[1] = 10 - 2 = 8
Ideal untuk query range-sum akeh ing data statik. Varyan: prefix sums 2D kanggo submatrix sums, prefix XOR, lan difference arrays kanggo range updates. Yen array sering owah, gunaake Fenwick/segment tree. Ati-ati offset indeks (ukuran n+1).
Prefix sums ngowahi range queries O(n) berulang dadi O(1) lookups — menang gedhe banget yen queries asring.
Pola precompute-sekali, jawab-cepet umum kanggo akeh tugas pengolahan data.
Iku elemen pokok competitive programming lan blok pembangun umum ing analitik.
Pustaka pitakon wawancara IT kanthi jawaban rinci — saka Junior nganti Senior.
Nyumbang