第一种暴力法
class Solution {
public int subarraySum(int[] nums, int k) {
int count = 0;
for(int i = 0;i<nums.length;++i){
for(int j = i+1;j<=nums.length;++j){
int sum = 0;
for(int q = i;q<j;++q){
sum += nums[q];
}
if(sum == k){
count++;
}
}
}
return count;
}
}
超出时间限制
遍历 前缀和
class Solution {
public int subarraySum(int[] nums, int k) {
HashMap<Integer,Integer> map = new HashMap<>();
map.put(0,1);
int count = 0 ;
int sum = 0;
for(int i = 0 ;i<nums.length;++i){
sum +=nums[i];
if(map.containsKey(sum-k)){
count +=map.get(sum-k);
}
if(map.containsKey(sum)){
map.put(sum,map.get(sum)+1);
}else{
map.put(sum,1);
}
}
return count;
}
}