Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情。
一、题目描述:
给你一个整数数组
nums和一个整数k,请你统计并返回该数组中和为k的连续子数组的个数。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/su…
二、思路分析:
前缀和+map。map.set(0,1)是为了保证,一个元素本身等于k。
三、AC 代码:
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var subarraySum = function(nums, k) {
let map=new Map();
map.set(0,1)
let len =nums.length;
let dp=0;
let res=0;
for(let i=0;i<len;i++){
dp+=nums[i];
if(map.has(dp-k)){
res+=map.get(dp-k);
}
map.set(dp,map.has(dp)?map.get(dp)+1:1)
}
return res
};
四、总结:
前缀和+map