问题描述:
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。
算法思路:代码文档,算法解析的私得
完整代码如下:
import java.util.HashMap;
import java.util.Map;
public class SubarraySum {
public static int countSubarraySum(int[] nums ,int k){
int count = 0;
int sum = 0;
Map<Integer,Integer> prefixSumCount = new HashMap<>();
prefixSumCount.put(0,1);
for (int num : nums){
sum += num;
if (prefixSumCount.containsKey(sum - k)){
count += prefixSumCount.get(sum - k);
System.out.print("count: " + count+"----");
}
prefixSumCount.put(sum, prefixSumCount.getOrDefault(sum, 0) + 1);
// 打印 prefixSumCount 哈希表的值
System.out.println("prefixSumCount: " + prefixSumCount);
}
return count;
}
public static void main(String[] args) {
int[] nums = {1, 1, 1,2,2,2,12,1};
int k = 2;
int count = countSubarraySum(nums, k);
System.out.println("Number of subarrays with sum " + k + ": " + count);
}
}