Leetcode 560 和為K的子陣列

2021-10-06 04:08:19 字數 1049 閱讀 8314

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...