LeetCode 560 和為K的子陣列

2021-10-07 04:46:20 字數 500 閱讀 1737

很多子陣列問題都採用雜湊表解決。

一遍遍歷,字典中保留的是字首和為鍵值的下標的個數

from typing import *

from collections import defaultdict

class solution:

'''記錄和為某個值得下標個數

子陣列的問題很多都考慮前序和

'''def subarraysum(self, nums: list[int], k: int) -> int:

dic1 = defaultdict(int)

dic1[0] = 1

cnt = 0

sum = 0

for val in nums:

sum += val

if sum - k in dic1:

cnt += dic1[sum - k]

dic1[sum] += 1

return cnt

leetcode 560 和為k的子陣列

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

LeetCode 560 和為K的子陣列

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

Leetcode 560 和為K的子陣列

560.和為k的子陣列 一開始用的窮舉,超時了 class solution def subarraysum self,nums list int k int int counter 0for i in range len nums sum 0 a i while a len nums 1 sum ...