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
=sum
+nums[a]
a+=1if
sum== k:
counter+=
1return counter
看題解可以用字典,遍歷一遍列表,並計算之前所有元素的和 sum[i]=sum[i-1]+nums[i],計算是否有和為k的值也就是sum[i]-sum[j]=k, 此時計算sum[i]-k也就是sum[j]在字典裡出現過幾次就可以了
class
solution
:def
subarraysum
(self, nums: list[
int]
, k:
int)
->
int:
counter=
0sum=0
mydict=
for i in nums:
sum+=i
ifsum-k in mydict:
counter+=mydict[
sum-k]
ifsum
in mydict:
mydict[
sum]+=1
else
: mydict[
sum]=1
return counter
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 解題思路 從前向後...
LeetCode560 和為K的子陣列
給定乙個整數陣列和乙個整數 k,你需要找到該陣列中和為 k 的連續的子陣列的個數。示例 1 輸入 nums 1 1,1 k 2輸出 2,1,1 與 1,1 為兩種不同的情況。說明 陣列的長度為 1,20,000 陣列中元素的範圍是 1000 1000 且整數 k 的範圍是 1e7 1e7 用字典su...