int shortestWindow(int[] values) {
int best = values.length + 1;
for (int left = 0, right = 0; right < values.length; right++) {
add(values[right]);
while (valid()) {
best = Math.min(best, right - left + 1);
remove(values[left++]);
}
}
return best == values.length + 1 ? 0 : best;
}
def shortest_window(values: list[int]) -> int:
left = 0
best = len(values) + 1
for right, value in enumerate(values):
add(value)
while valid():
best = min(best, right - left + 1)
remove(values[left])
left += 1
return 0 if best == len(values) + 1 else best
def shortestWindow(values: Array[Int]): Int =
var left = 0
var best = values.length + 1
for right <- values.indices do
add(values(right))
while valid() do
best = best.min(right - left + 1)
remove(values(left))
left += 1
if best == values.length + 1 then 0 else best
int shortestWindow(const std::vector<int>& values) {
int left = 0, best = static_cast<int>(values.size()) + 1;
for (int right = 0; right < values.size(); right++) {
add(values[right]);
while (valid()) {
best = std::min(best, right - left + 1);
remove(values[left++]);
}
}
return best == values.size() + 1 ? 0 : best;
}