leetcode 560 和為K的子陣列

2021-10-09 10:51:01 字數 1034 閱讀 6305

給定乙個整數陣列和乙個整數k,你需要找到該陣列中和為k的連續的子陣列的個數。

示例 1 :

輸入:nums = [1,1,1], k = 2

輸出: 2 , [1,1] 與 [1,1] 為兩種不同的情況。

說明 :

陣列的長度為 [1, 20,000]。

陣列中元素的範圍是 [-1000, 1000] ,且整數 k 的範圍是 [-1e7, 1e7]。

class solution(object):

def subarraysum(self, nums, k):

""":type nums: list[int]

:type k: int

:rtype: int

"""mp =

pre = 0

count = 0

for i in range(len(nums)):

pre += nums[i]

count += mp.get(pre-k,0)

if pre not in mp:

mp[pre] = 1

else:

mp[pre] += 1

return count

對於乙個陣列而言字首和就是前n個元素的累加和。這道題如何轉換成字首和問題是難點。

首先考慮最直觀的方法也就是暴力法,列舉所有可能的情況。那麼首先要考慮每個以i節點為止的情況,對於每個i再去遍歷j,找到乙個0

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