Инициализируйте максимум первым элементом и сравните с ним остальные. Пустой varargs не имеет максимума, поэтому для него нужен явный отказ.
Определение наибольшего числа в массиве, полученном через varargs
Инициализируйте максимум первым элементом и сравните с ним остальные. Пустой varargs не имеет максимума, поэтому для него нужен явный отказ.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию, возвращающую наибольшее значение среди переданных чисел, используя параметр переменной длины (varargs). В решении допускаются только базовые возможности языка Java — нельзя применять Stream API, сортировку или сторонние библиотеки.
private static int getMax(int... values) {
// вернуть максимальное число из массива values
}
Ответ
Инициализируйте максимум первым элементом и сравните с ним остальные. Пустой varargs не имеет максимума, поэтому для него нужен явный отказ.
private static int getMax(int... values) {
if (values == null || values.length == 0)
throw new IllegalArgumentException("No values");
int max = values[0];
for (int i = 1; i < values.length; i++)
if (values[i] > max) max = values[i];
return max;
}
Varargs внутри метода является обычным int[]. Инициализация нулём была бы ошибочной для набора только отрицательных чисел. Время O(n), дополнительная память O(1); порядок массива не меняется.