def subarray_sum(nums,k):
count=total=0; prefix={0:1}
for n in nums:
total+=n
count+=prefix.get(total-k,0)
prefix[total]=prefix.get(total,0)+1
return count
public int subarraySum(int[] nums,int k){
int count=0,total=0;
Map<Integer,Integer> pre=new HashMap<>(); pre.put(0,1);
for(int n:nums){
total+=n;
count+=pre.getOrDefault(total-k,0);
pre.put(total,pre.getOrDefault(total,0)+1);
} return count;
}
dict.get() and getOrDefault() equivalent.
def subarray_sum(nums,k):
count=total=0; prefix={0:1}
for n in nums:
total+=n
count+=prefix.get(total-k,0)
prefix[total]=prefix.get(total,0)+1
return count
public int subarraySum(int[] nums,int k){
int count=0,total=0;
Map<Integer,Integer> pre=new HashMap<>(); pre.put(0,1);
for(int n:nums){
total+=n;
count+=pre.getOrDefault(total-k,0);
pre.put(total,pre.getOrDefault(total,0)+1);
} return count;
}
1. Track prefix sums 2. Check sum-k exists