成都网站建设制作,网站建设不完整之前不建议推行,网页开发工具怎么打开,html5 网站推荐题目
给你一个整数数组 nums 和一个整数 k #xff0c;请你统计并返回 该数组中和为 k 的连续子数组的个数 。
示例 1#xff1a;
输入#xff1a;nums [1,1,1], k 2
输出#xff1a;2示例 2#xff1a;
输入#xff1a;nums [1,2,3], k 3
输出#xff1a;2提示…题目
给你一个整数数组 nums 和一个整数 k 请你统计并返回 该数组中和为 k 的连续子数组的个数 。
示例 1
输入nums [1,1,1], k 2
输出2示例 2
输入nums [1,2,3], k 3
输出2提示
1 nums.length 2 * 10^4-1000 nums[i] 1000-10^7 k 10^7 解答
源代码
class Solution {public int subarraySum(int[] nums, int k) {HashMapInteger, Integer map new HashMap();map.put(0, 1);int pre 0, count 0;for (int i 0; i nums.length; i) {pre nums[i];if (map.containsKey(pre - k)) {count map.get(pre - k);}map.put(pre, map.getOrDefault(pre, 0) 1);}return count;}
}
总结
计算每个元素对应的前缀和将前缀和出现的次数记录在哈希表中当pre[j] - pre[i - 1] k时数组[i … j]即为和为k的数组计数1。