做网站一个人可以吗,食品包装设计价格,孝感做网站的公司,wordpress 百度插件一、题目描述
给你一个整数数组 nums 和一个整数 k #xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。
注意#xff1a;nums中的元素可为负数
输入#xff1a;nums [1,1,1], k 2
输出#xff1a;2输入#xff1a;num…一、题目描述
给你一个整数数组 nums 和一个整数 k 请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。
注意nums中的元素可为负数
输入nums [1,1,1], k 2
输出2输入nums [1,2,3], k 3
输出2
1 nums.length 2 * 104
-1000 nums[i] 1000
-107 k 107
二、题目解答
class Solution {
public:int subarraySum(vectorint nums, int k) {//假设数组的前缀和为presum[i],那么对于任意两个下标i,j//如果presum[j]-presum[i] k//那么从i1到j的连续子数组合为 k//在遍历过程中用哈希表存储前缀和出现的次数//如果存在哈希表中那么就count出现次数 int sum 0;int count 0;map int, int map_tmp;map_tmp [0] 1;for (int i 0; i nums.size(); i){sum sum nums[i];//有当前前缀和-k的前缀和if (map_tmp.find(sum - k) ! map_tmp.end())count map_tmp[sum - k];//判断完毕后再加入mapmap_tmp[sum];}return count;}
}