本文主要是介绍力扣刷题第二阶段Days35(javascript),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1,题目描述 -- 和为K的子数组
给你一个整数数组 nums
和一个整数 k
,请你统计并返回 该数组中和为 k
的子数组的个数 。
子数组是数组中元素的连续非空序列。
2,代码详解
哈希+前缀和
/*** @param {number[]} nums* @param {number} k* @return {number}*/
var subarraySum = function(nums, k) {let map = new Map();// 键: pre[i]之和 值:和出现的次数map.set(0,1);let preSum = 0;let counter = 0;for(let i = 0 ;i < nums.length; i++){preSum += nums[i];// 如果存在if(map.has(preSum - k)){counter += map.get(preSum - k);}if(map.has(preSum)){map.set(preSum,map.get(preSum ) + 1);}else{map.set(preSum,1);}}return counter;};
这篇关于力扣刷题第二阶段Days35(javascript)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!