import java.util.HashMap;
public class Main {
public static void main
(String[] args
) { int[] A = {15, 10, 5, 2, 7, 1, 9, 8, 7};
int k = 15;
System.
out.
println(countShortestSubarrays
(A, k
)); }
public static int countShortestSubarrays(int[] A, int k) {
HashMap
<Integer, Integer
> sumIndexMap
= new HashMap
<>(); int sum
= 0, minLength
= Integer.
MAX_VALUE, count
= 0; sumIndexMap.put(0,0);
//because we do containskey(0)
//since the logic sum-k==0 means we found a sum==k
//if it doesnt exist already in map then the first sum==k will not be considered
for (int i = 0; i < A.length; i++) {
sum += A[i];
if (sumIndexMap.containsKey(sum - k)) {
int length = i - sumIndexMap.get(sum - k)+1;
if (length < minLength) {
minLength = length;
count = 1; // Reset count for the new shortest length
} else if (length == minLength) {
count++; // Increment count for the same length
}
}
sumIndexMap.put(sum, i); // Store the index of the current sum
}
return (minLength
== Integer.
MAX_VALUE) ? 0 : count
; }
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludFtdIEEgPSB7MTUsIDEwLCA1LCAyLCA3LCAxLCA5LCA4LCA3fTsKICAgICAgICBpbnQgayA9IDE1OwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudFNob3J0ZXN0U3ViYXJyYXlzKEEsIGspKTsKICAgIH0KICAgIAoKICAgIHB1YmxpYyBzdGF0aWMgaW50IGNvdW50U2hvcnRlc3RTdWJhcnJheXMoaW50W10gQSwgaW50IGspIHsKICAgICAgICBIYXNoTWFwPEludGVnZXIsIEludGVnZXI+IHN1bUluZGV4TWFwID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgIGludCBzdW0gPSAwLCBtaW5MZW5ndGggPSBJbnRlZ2VyLk1BWF9WQUxVRSwgY291bnQgPSAwOwogICAgICAgIHN1bUluZGV4TWFwLnB1dCgwLDApOwogICAgICAgIC8vYmVjYXVzZSB3ZSBkbyBjb250YWluc2tleSgwKSAKICAgICAgICAvL3NpbmNlIHRoZSBsb2dpYyBzdW0taz09MCBtZWFucyB3ZSBmb3VuZCBhIHN1bT09awogICAgICAgIC8vaWYgaXQgZG9lc250IGV4aXN0IGFscmVhZHkgaW4gbWFwIHRoZW4gdGhlIGZpcnN0IHN1bT09ayB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBzdW0gKz0gQVtpXTsKICAgICAgICAgICAgaWYgKHN1bUluZGV4TWFwLmNvbnRhaW5zS2V5KHN1bSAtIGspKSB7CiAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gaSAtIHN1bUluZGV4TWFwLmdldChzdW0gLSBrKSsxOwogICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA8IG1pbkxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIG1pbkxlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDE7IC8vIFJlc2V0IGNvdW50IGZvciB0aGUgbmV3IHNob3J0ZXN0IGxlbmd0aAogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsZW5ndGggPT0gbWluTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgY291bnQrKzsgLy8gSW5jcmVtZW50IGNvdW50IGZvciB0aGUgc2FtZSBsZW5ndGgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBzdW1JbmRleE1hcC5wdXQoc3VtLCBpKTsgLy8gU3RvcmUgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IHN1bQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChtaW5MZW5ndGggPT0gSW50ZWdlci5NQVhfVkFMVUUpID8gMCA6IGNvdW50OwogICAgfQp9Cg==