20. Фильтры
Теория
Задача
Известно, что в массиве имеются ненулевые элементы. Напечатать все элементы, кроме первого из них
Для решения этой задачи проще всего создать второй массив и сохранять в него все найденные числа. Для определения положения нового элемента необходимо использовать переменную-счётчик уже найденных чисел.
Когда массив искомых чисел составлен, нам остаётся только перебрать найденные числа, пропустив самое первое.
public class Main {
public static void main(String[] args) {
int[] arr = new int[]{-36, 0, 0, 0, 0, 0, 0, 1, 0, 0, 66, 0};
// массив найденных ненулевых чисел
int[] found = new int[arr.length];
// кол-во найденных ненулевых чисел
int cnt = 0;
// перебираем индексы элементов массива
for (int i = 0; i < arr.length; i++)
// если i-ый элемент массива чётный
if (arr[i] != 0) {
// сохраняем найденное значение
found[cnt] = arr[i];
// увеличиваем кол-во чётных чисел на 1
cnt++;
}
// выводим все найденные числа, кроме первого
for (int i = 1; i < cnt; i++) {
System.out.print(found[i] + " ");
}
}
}
На консоль будет выведено:
1 66
Если нужно сохранять не значения, а порядковые номеры (индексы), то нужно просто заменить строчку сохранения найденного значения:
public class Main {
public static void main(String[] args) {
int[] arr = new int[]{-36, 0, 0, 0, 0, 0, 0, 1, 0, 0, 66, 0};
// массив найденных ненулевых чисел
int[] found = new int[arr.length];
// кол-во найденных ненулевых чисел
int cnt = 0;
// перебираем индексы элементов массива
for (int i = 0; i < arr.length; i++)
// если i-ый элемент массива чётный
if (arr[i] != 0) {
// сохраняем найденный индекс
found[cnt] = i;
// увеличиваем кол-во чётных чисел на 1
cnt++;
}
// выводим все найденные числа, кроме первого
for (int i = 1; i < cnt; i++) {
System.out.print(found[i] + " ");
}
}
}
На консоль будет выведено:
7 10
Задание
Во всех задачах дан массив целых чисел длины . Коллекции использовать нельзя
- Известно, что в массиве имеются ненулевые элементы. Напечатать все элементы, кроме первого из них
- Известно, что в массиве имеются отрицательные элементы. Напечатать все эти элементы, кроме последнего из них.
- Напечатать все элементы, следующие за последним элементом, оканчивающимся цифрой . Если элементов, оканчивающихся цифрой , в массиве нет, то ни один элемент не должен быть напечатан.
- Массив упорядочен по возрастанию, и число , о котором известно следующее: оно не равно ни одному из элементов массива, больше первого и меньше последнего элемента. Вывести все элементы массива, меньшие .
- Если в массиве есть хотя бы одна пара одинаковых соседних элементов,
то напечатать все элементы,
следующие за элементами первой из таких пар. В противном случае на экран
должно быть выведено соответствующее сообщение
НЕТ
. - Если в массиве есть элементы, большие заданного числа , то
напечатать все элементы, следующие за первым из таких элементов. В противном случае на экран
должно быть выведено соответствующее сообщение
НЕТ
. - Вывести все индексы элементов, равных максимальному, кроме второго. Если максимум ровно один, то вывести просто его индекс. Гарантируется, что массив содержит хотя бы два максимума.