int longestWindow(int[] values) {
int best = 0;
for (int left = 0, right = 0; right < values.length; right++) {
add(values[right]);
while (!valid()) remove(values[left++]);
best = Math.max(best, right - left + 1);
}
return best;
}
def longest_window(values: list[int]) -> int:
left = best = 0
for right, value in enumerate(values):
add(value)
while not valid():
remove(values[left])
left += 1
best = max(best, right - left + 1)
return best
def longestWindow(values: Array[Int]): Int =
var left = 0
var best = 0
for right <- values.indices do
add(values(right))
while !valid() do
remove(values(left))
left += 1
best = best.max(right - left + 1)
best
int longestWindow(const std::vector<int>& values) {
int left = 0, best = 0;
for (int right = 0; right < values.size(); right++) {
add(values[right]);
while (!valid()) remove(values[left++]);
best = std::max(best, right - left + 1);
}
return best;
}