很多子陣列問題都採用雜湊表解決。
一遍遍歷,字典中保留的是字首和為鍵值的下標的個數
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 ...