问题:
难度:medium
说明:
给一个数组,求出里面连续子序列和为K的子序列个数,连续子序列就是相当于集合真子集,而且顺序连续的意思。输入数组长度[1, 20,000],数组元素值范围 [-1000, 1000] ,K值[-1e7, 1e7](科学记数法)
输入案例:
// 下标 1 2 和为2,下表 2 3 和为2,所以统计为2,两个连续子序列
Input:nums = [1,1,1], k = 2
Output: 2
我的代码:
这个略折腾,幸好之前有借鉴的题目 Contiguous Array。
设置count为统计值,
首先每次相加结果得出sum,
然后map.get (sum-k) 和count相加(因为如果sum随着遍历一直和元素相加,如果之前每出现一次map中已存放的 sumX == (sum - K) ,可以认为从sumX 之后的子序列和为K。)
把每次sum都存到map里面,设置出现次数为 map.get(sum)+ 1(因为可能出现多次相同的sum)
public class SubarraySumEqualsK {
public static void main(String[] args) {
Solution solution = new SubarraySumEqualsK().new Solution();
// 被坑的测试数据
int[] arr = new int[]{1,2,3,