这里使用到了前缀和数组目标子数组和可以转化为两个前缀和的差值如果这个差值等于k说明存在目标子数组这里每个前缀和可以存于map当中key为前缀和value为出现次数class Solution { public int subarraySum(int[] nums, int k) { MapInteger,Integer map new HashMap(); int[] target new int[nums.length 1]; int res 0; for(int i 0 ;i nums.length;i){ target[i 1] target[i] nums[i]; } for(int i : target){ res map.getOrDefault(i - k,0); map.put(i,map.getOrDefault(i,0) 1); } return res; } }