#Python
学到列表和元组了,这是列表元组的题,希望各位指出,感谢各位了
第八行应该是赋值,而不是判等
flag=True
# 一开始采用暴力解法,超出了时间限制
class Solution:
def subarraySum(self, nums: List[int], k: int) -> int:
result=0
for i in range(len(nums)):
s=nums[i]
if s==k:
result+=1
for j in range(i+1,len(nums)):
s+=nums[j]
if s==k:
result+=1
return result
# 改为如下代码
def subarraySum(nums, k):
dic = {}
# 注意此处如果没有dic[0]=1的话,后面必须要有对单个元素等于k的判断;如果有判断的话则不需要dic[0]=1
# dic[0]=1
acc, res = 0, 0
for num in nums:
acc += num
if acc == k:
res += 1
if acc - k in dic:
res += dic[acc - k]
dic[acc] = dic.get(acc, 0) + 1
return res