Взятие части массива
Условие: Дан массив возрастающих чисел. Даны два числа. Задача — написать метод, который из данного массива достанет ту часть, которая лежит между данными числами (включительно).
Условия выполнения: Работа с массивами. Циклы. Условные операторы (т.е. при выводе результата нельзя использовать класс Arrays)
Требуемая реализация:
- Пример ввода: {1,3,5,6,9,11,24}, 4, 10
- Пример вывода: [5, 6, 9]
Требования к методу:
- Метод должен быть public static.
- Сигнатура метода getSubArrayBetween(int[] numbers, int start, int end.
Моя реализация кодом:
public static int[] getSubArrayBetween(int[] numbers, int start, int end) {
if (start < 0 || start >= numbers.length || end < start || end >= numbers.length) {
return new int[0];
}
int[] subArray = new int[end - start + 1];
for (int i = 0; i < subArray.length; i++) {
subArray[i] = numbers[start + i];
}
return subArray;
}
К сожалению тесты скрыты (они крутятся на площадке в скрытом от пользователя виде), выдается только результат:
Ваш ответ не прошел тест! Тест провален. Не корректная реализация метода getSubArrayBetween.
Собственно мой вопрос: код, что я написал вообще верен/жизнеспособен, или я что-то не так понимаю. Как в таком случае вывести все числа массива от позиции start до позиции end?
Ответы (1 шт):
Думаю, вы неверно интерпретировали задание.
Даны не индексы, а значения, и нужно извлечь часть массива с элементами, которые больше или равны start и меньше или равны end.
Для этого нужно найти индексы соответствующих элементов массива - либо линейным поиском, либо двоичным, и вычленить соответствующий диапазон, как вы уже делаете