Leetcode_hot100_560.和为k的子数组
Leetcode_hot100_560.和为k的子数组
题目要求
-
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
-
子数组是数组中元素的连续非空序列。
示例 1:
输入:nums = [1,1,1], k = 2
输出:2
示例 2:
输入:nums = [1,2,3], k = 3
输出:2
前缀和
- 前缀和是指数组中从第一个元素到当前元素的和。对于数组 nums,前缀和数组 prefixSum 定义如下:
- prefixSum[i] = nums[0] + nums[1] + … + nums[i-1],其中 i 从 0 开始。
- 假设prefixSum[i] 表示前 i 个元素的和,prefixSum[j] 表示前 j 个元素的和,那么子数组 nums[i…j-1] 的和可以表示为 prefixSum[j] - prefixSum[i]。
- 因此,如果我们想找到和为 k 的子数组,我们需要满足 prefixSum[j] - prefixSum[i] = k,即 prefixSum[j] = prefixSum[i] + k。

1 | class Solution { |
- 时间复杂度:O(n)。
- 空间复杂度:O(n)。返回值不计入。