LeetCode中有關字首和的題目總結

2021-10-05 09:41:14 字數 1177 閱讀 8516

前字首和是一種重要的預處理,能大大降低查詢的時間複雜度。

差分:表示當前數字與上乙個數字的差值

差分陣列即是講這一系列差分值放入乙個陣列。

舉個例子,定義陣列a為

int a[10]

=;

那麼差分陣列dif的值為

221

14-7411

字首和,即利用乙個陣列sum來記錄陣列a前i項的和

可用來求區間和,如求陣列a在區間[l,r]的和,那麼就是將a[l] 和 a[r] 之間的所有的數相加,但是如果提前知道前l項的和sum[l] 以及前r項的和 sum[r],那麼所求的結果就是 sum[l] - sum[r]。這裡sum[l] 以及sum[r] 就是字首和。(leetcode的560題)

利用字首和可以極大的降低區間查詢的時間複雜度

560. 和為k的子陣列

題目目標是:找到該陣列中和為 k 的連續的子陣列的個數

那麼重點就是找到和為k的連續子陣列

假設在區間[left, right]中的陣列元素的和為k,那麼利用字首和中的sum陣列,即sum[right] - sum[left] = k,然後掃瞄整個陣列,利用map儲存sum[left]出現的個數,加上sum[right]-k作為出現過的前n項和的個數,然後更新統計量即可。

class

solution

unordered_map<

int,

int> mp};

for(

int i =

0; i

size()

;++i)

return res;}}

;

437. 路徑總和 iii

1248. 統計「優美子陣列」

參考1

參考2參考3

C 中有關string和byte

c 中有關string和byte byte bytearray system.text.encoding.default.getbytes str 怎麼樣,夠簡單吧?反過來也是一樣,把byte轉成string string str system.text.encoding.default.getst...

vue中有關v for和key的細節

渲染資料時我們可能會用到v for來遍歷資料,但是key的話有時候是可加可不加,實際上為了規範還是加上比較好,因為可能會遇到如下例子中的問題 html js 效果圖則是這樣的 這裡輸入id和name後新增是新增在前面的,問題就是,如果h1標籤沒有加key,我先勾上 4 小黑 然後這時輸入id和nam...

Oracle中有關Latch的介紹

本文向各位闡述oracle的latch機制,latch,用金山詞霸翻譯是門插栓,閉鎖,專業術語叫鎖存器,我開始接觸時就不大明白為什麼不寫lock,不都是鎖嗎?只是翻譯不同而以?研究過後才知道兩者有很大的區別。latch是oracle提供的輕量級鎖資源,他用於快速,短時間的鎖定資源,防止多個併發程序同...