Мне надо убрать из массива все числа, которые больше соседних.
Например
5 3 8 1 превращается в 3 ( 5 больше 3 ) 1 ( 8 больше 3 и 1 ).
18, 1, 3, 6, 7, -5 превращается в 1, 3, 6, -5 и т.п.
Но столкнулся с такой трудностью, когда индекс > 0 и < array.length-1, то мы сравниваем предыдущее число и следующее с текущим.
Когда индекс 0 - только следующее
когда индекс array.length-1 - только предыдущее.
Выходит, большой if на три условия это единственный способ выполнить задачу?
Или есть более элегантный подход?
public static int[] removeMax(int[] array) {
int[] localMax = new int[array.length];
int s = -1;
for (int i = 0; i < array.length; i++) {
if ((i == 0 && array[i] > array[i + 1]) ||
(i != 0 && i != array.length - 1 && array[i] > array[i + 1] && array[i] > array[i - 1]) ||
(i == array.length-1 && array[i-1] < array[i])) {
continue;
}
localMax[++s] = array[i];
}
return Arrays.copyOf(localMax, s+1);
}
Вот пример моего ифа, может, я что-то неправильно понимаю и есть более простой способ.