和为K的子数组
和为K的子数组
给你一个整数数组 nums
和一个整数 k
,请你统计并返回 该数组中和为 k
的子数组的个数 。
子数组是数组中元素的连续非空序列。
示例 1:
1 | 输入:nums = [1,1,1], k = 2 |
示例 2:
1 | 输入:nums = [1,2,3], k = 3 |
提示:
1 <= nums.length <= 2 * 104
-1000 <= nums[i] <= 1000
-107 <= k <= 107
使用哈希表存储每个前缀和出现的次数
如果[j,i]
这段区间和为k
:sum[i]-sum[j-1]==k -> sum[i]-k==sum[j-1]
。
使用哈希表记录每个前缀和出现的次数,由于sum[j-1]
先加入的哈希表,如果之后遍历到i
,发现sum[i]-k
也在哈希表中说明,[j,i]
这段区间和为k
.也就是当哈希表中存在sum[i]-k
时就找到了满足条件的区间。
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 面试资料!