Учитывая массив неверных чисел и диапазон целых чисел, как я могу определить самый длинный сегмент целых чисел в этом включающем диапазоне, который не содержит плохого числа?
Например, вам дается нижний предел l = 3 и верхний предел r = 48, Массив badNumbers = [37,7,22,15,49,60]. Сегменты без плохих номеров: [3,6], [8,14], [16,21], [23,36] и [38,48]. Самый длинный сегмент - [23,36] и состоит из 14 элементов.
Проблема: Описание функции Завершите функцию goodStatement в редакторе ниже. Функция должна возвращать целое число, обозначающее длину самого длинного непрерывного диапазона натуральных чисел в диапазоне от l до r включительно, который не включает плохих чисел.
goodSegment имеет следующие параметры: badNumbers [badNumbers [0], ... badNumbers [n-1]]: массив целых чисел l: целое число, нижняя граница, включая r: целое число, верхняя граница, включительно
Ограничения 1 ≤ n ≤10 ^ 5 1 ≤ badNumbers [i] ≤ 10 ^ 9 badNumbers содержит отдельные элементы
Я пытался вот так
private boolean withinRange (int [] array, int lower, int upper) {
int start = 0;
int end = array.length;
while (start < end) {
int current = (start + end) / 2;
if (array[current] >= upper) {
end = current;
} else if (array[current] < lower) {
start = current + 1;
} else {
return true;
}
}
return false;
}
Пример