✕ All numbers are positive and you need the shortest/longest window (sliding window is simpler)
The template
A skeleton to adapt. The parts in comments are what changes from problem to problem.
Prefix Sum + Hash Map · template
Map<Integer, Integer> seen = new HashMap<>();
seen.put(0, 1); // empty prefix: sum 0 seen once
int sum = 0, count = 0;
for (int x : arr) {
sum += x;
count += seen.getOrDefault(sum - k, 0); // earlier prefixes that make a k-sum ending here
seen.merge(sum, 1, Integer::sum);
}
return count;