560 和為K的子陣列

2022-08-11 23:21:16 字數 565 閱讀 6289

題目描述:

給定乙個整數陣列和乙個整數 k,你需要找到該陣列中和為 k 的連續的子陣列的個數。

示例 1 :

輸入:nums = [1,1,1], k = 2

輸出: 2 , [1,1] 與 [1,1] 為兩種不同的情況。

說明 :

陣列的長度為 [1, 20,000]。

陣列中元素的範圍是 [-1000, 1000] ,且整數 k 的範圍是 [-1e7, 1e7]。

思想:假如存在區間[left,right],使得在[left,right]這個區間的子陣列的和為k。換句話說,就是前right項和減去前left項和等於k,即前left項和等於前right項和減去k。

可以這樣做,在掃瞄陣列的同時,假設當前掃到第i位,記錄它的前i項和sum,用該和減去k,即sum-k,判斷sum-k是否為某個位置的前n項和,若是,更新統計量。

**:

class

solution

return

res;

}};

注:unordered_map 的key是字首和,value是字首和出現的次數

560 和為K的子陣列

題解 1.維護乙個unordered map 字首陣列和,count 2.遍歷陣列的累加和,如果存在sum k,在 unordered map裡面,則有count種情況 複雜度分析 解題思路 一 建立map表用於儲存每個連續子陣列sum求和出現的次數,初始化為 0,1 表示和為0的連續子陣列出現1次...

560 和為K的子陣列

給定乙個整數陣列和乙個整數 k,你需要找到該陣列中和為 k 的連續的子陣列的個數。示例 1 輸入 nums 1,1,1 k 2 輸出 2 1,1 與 1,1 為兩種不同的情況。求的是sum i,j k的個數。這個式子可以進行一些分解 分解1 sum i,j sum i,j 1 nums j k 變成...

560 和為K的子陣列

給定乙個整數陣列和乙個整數 k,你需要找到該陣列中和為 k 的連續的子陣列的個數。示例 1 輸入 nums 1,1,1 k 2 輸出 2 1,1 與 1,1 為兩種不同的情況。說明 陣列的長度為 1,20,000 陣列中元素的範圍是 1000,1000 且整數 k 的範圍是 1e7,1e7 clas...