560 和為K的子陣列

2021-10-06 04:53:48 字數 598 閱讀 1905

給定乙個整數陣列和乙個整數 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 變成

sum(i,j-1) = k-nums[j],檢查這樣的sum(i,j-1)是否存在

分解2:sum(i, j) = sum(0, j)-sum(0, i-1) = k

sum(0, i-1) = sum(0, j)-sum(i, j)=sum(0, j)-k,檢查這樣的sum(0, i-1)是否存在。

分解2比分解1好的地方就在於,不用頻繁更新快取的結果,每次j+1,都只要更新sum(0, j+1)。而分解1,每次j+1都需要對sum(i, j)進行一次+nums[j+1]操作。

class

solution

return count;

}}

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 為兩種不同的情況。說明 陣列的長度為 1,20,000 陣列中元素的範圍是 1000,1000 且整數 k 的範圍是 1e7,1e7 clas...

560 和為K的子陣列

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