/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
int[] arr = {1, 2, -1, 1, 1};
int k = 3;
Map
<Integer, Integer
> prefixIndex
= new HashMap
<>(); int sum
= 0, minLen
= Integer.
MAX_VALUE;
prefixIndex.put(0, -1); // for subarrays starting at index 0
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
if (prefixIndex.containsKey(sum - k)) {
minLen
= Math.
min(minLen, i
- prefixIndex.
get(sum
- k
)); }
// always update for shortest
prefixIndex.put(sum, i);
}
System.
out.
println("No subarray with sum = " + k
); } else {
System.
out.
println("Shortest subarray length with sum = " + k
+ " is: " + minLen
); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWludFtdIGFyciA9IHsxLCAyLCAtMSwgMSwgMX07CgkJaW50IGsgPSAzOwoKCQlNYXA8SW50ZWdlciwgSW50ZWdlcj4gcHJlZml4SW5kZXggPSBuZXcgSGFzaE1hcDw+KCk7CgkJaW50IHN1bSA9IDAsIG1pbkxlbiA9IEludGVnZXIuTUFYX1ZBTFVFOwoKCQlwcmVmaXhJbmRleC5wdXQoMCwgLTEpOyAvLyBmb3Igc3ViYXJyYXlzIHN0YXJ0aW5nIGF0IGluZGV4IDAKCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKCQkJc3VtICs9IGFycltpXTsKCgkJCWlmIChwcmVmaXhJbmRleC5jb250YWluc0tleShzdW0gLSBrKSkgewoJCQkJbWluTGVuID0gTWF0aC5taW4obWluTGVuLCBpIC0gcHJlZml4SW5kZXguZ2V0KHN1bSAtIGspKTsKCQkJfQoKCQkJLy8gYWx3YXlzIHVwZGF0ZSBmb3Igc2hvcnRlc3QKCQkJcHJlZml4SW5kZXgucHV0KHN1bSwgaSk7CgkJfQoKCQlpZiAobWluTGVuID09IEludGVnZXIuTUFYX1ZBTFVFKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiTm8gc3ViYXJyYXkgd2l0aCBzdW0gPSAiICsgayk7CgkJfSBlbHNlIHsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJTaG9ydGVzdCBzdWJhcnJheSBsZW5ndGggd2l0aCBzdW0gPSAiICsgayArICIgaXM6ICIgKyBtaW5MZW4pOwoJCX0KCX0KfQo=