Постановка задачи
В массиве [latex]A(n)[/latex] найти и напечатать номера (индексы) локальных максимумов, то есть таких [latex]a_{i}[/latex], что [latex]a_{i-1}<x_{i}>a_{i+1}[/latex].
Входные данные:
Количество значений и сами значения
Выходные данные:
Индексы локальных максимумов
Тесты
№ | Количество значений | Значения | Результат |
1 | 6 | 2 4 6 1 3 7 5 | 2 |
2 | 7 | 3 1 6 2 8 5 7 | 2, 4 |
3 | 10 | 2 5 8 3 5 6 9 7 1 4 | 2, 6 |
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { int n; Scanner s = new Scanner(System.in); n = s.nextInt(); double[] x = new double[n]; for(int i=0; i<n; i++){ x[i]=s.nextInt(); } for(int j=1; j<=(n-2); j++){ if((x[j]>x[j+1])&&(x[j]>x[j-1])){ System.out.println(j + " "); } } } } |
Ссылка на решение задания на онлайн компиляторе Ideone.com
Описание решения
Объявляем переменную n для хранения размера массива. Далее создаем массив типа double. Для нахождения локальных максимумов x[i] создаем цикл for, в котором при каждой итерации будем проверять, являются ли значения локальными максимумами. Если значение удовлетворяет условие, выводим на экран индекс этого значения. Например, в первом тесте мы вводим количество значений 6, сами значения 2 4 6 1 3 7 5 и нашим результатом оказывается число с индексом 2, т.е. число 6. Так как числа 4 и 1 меньше 6, наше значение будет удовлетворять условие.