Взятие части массива

Условие: Дан массив возрастающих чисел. Даны два числа. Задача — написать метод, который из данного массива достанет ту часть, которая лежит между данными числами (включительно).

Условия выполнения: Работа с массивами. Циклы. Условные операторы (т.е. при выводе результата нельзя использовать класс 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 шт):

Автор решения: MBo

Думаю, вы неверно интерпретировали задание.

Даны не индексы, а значения, и нужно извлечь часть массива с элементами, которые больше или равны start и меньше или равны end.

Для этого нужно найти индексы соответствующих элементов массива - либо линейным поиском, либо двоичным, и вычленить соответствующий диапазон, как вы уже делаете

→ Ссылка