560.和为k的子数组
主要思路:
构建前缀和数组
求解数组连续区间[i,j]区间内的数组和
代码如下:
int subarraySum(vector<int>& nums, int k)
{
int len = nums.size();
// 计算前缀和的数组
vector<int> preSum(len + 1);
for (int i = 0; i < len; i++)
{
preSum[i + 1] = preSum[i] + nums[i];
}
int count = 0;
for (int left = 0; left < len; left++)
{
for (int right = left; right < len; right++)
{
// 区间和 [left..right],注意下标偏移
if (preSum[right + 1] - preSum[left] == k)
{
count++;
}
}
}
return count;
}
560.连续的子数组和
同理560,但是根据题目意思需要加一些特判
560
第一题: