560. 和为K的子数组(中等)- LeetCode
程序员文章站
2022-04-17 13:21:44
...
题目描述
自己解法
解法一:暴力求解,时间复杂度,空间复杂度:
class Solution:
def subarraySum(self, nums: List[int], k: int) -> int:
ans = 0
L = len(nums)
for i,val in enumerate(nums):
remain = k - val
if remain == 0:
ans += 1
for j in range(i+1,L):
remain -= nums[j]
if remain == 0:
ans += 1
return ans
解法二:哈希表+前缀和求解,时间复杂度,空间复杂度。
class Solution:
def subarraySum(self, nums: List[int], k: int) -> int:
mp = {0:1}
ans,pre = 0,0
for i,val in enumerate(nums):
pre += val
if pre - k in mp:
ans += mp[pre-k]
mp[pre] = mp.get(pre,0) + 1
return ans
官方解答参考:链接。
推荐阅读
-
LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
leetcode:求两数之和,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
Leetcode打卡8:题号1:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案
-
LeetCode1.两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,返回数组下标。假设每种输入只对应一个答案。但数组中同一个元素不能使用两遍
-
Leetcode——给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。(java语言)
-
LeetCode [Python]1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
求数组元素和是K的倍数的子串的最大长度
-
文件夹下(包含子文件夹和文件),取文件夹和子文件夹下所有后缀为JPG的文件的,路径和文件名 ,把路径和文件名放在数组中
-
[LeeCode 862. 和至少为 K 的最短子数组]单调栈
-
LeetCode 907. 子数组的最小值之和--单调栈+闭区间和开区间处理