560.和为 K 的子数组
和为 K 的子数组
给你一个整数数组 nums 和一个整数 k,请你统计并返回 该数组中和为 k 的子数组的个数。
子数组是数组中元素的连续非空序列。
示例 1:
输入:nums = [1,1,1], k = 2
输出:2
示例 2:
输入:nums = [1,2,3], k = 3
输出:2
提示:
- 1 <= nums.length <= $2 * 10^4$
- -1000 <= nums[i] <= 1000
- $-10^7$ <= k <= $10^7$
解析
前缀和 + 哈希表:如果 prefixSum[j] - prefixSum[i] === k,则 nums[i..j] 的和为 k。
1 | |
前缀和 + 哈希表是处理子数组和问题的经典套路。时间复杂度 O(n),空间复杂度 O(n)。
560.和为 K 的子数组
https://leetcode.lz5z.com/560.subarray-sum-equals-k/