Skip to main content

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

Задание

Во всех задачах дан массив целых чисел длины nn. Коллекции использовать нельзя

  1. Известно, что в массиве имеются ненулевые элементы. Напечатать все элементы, кроме первого из них
  2. Известно, что в массиве имеются отрицательные элементы. Напечатать все эти элементы, кроме последнего из них.
  3. Напечатать все элементы, следующие за последним элементом, оканчивающимся цифрой 77. Если элементов, оканчивающихся цифрой 77, в массиве нет, то ни один элемент не должен быть напечатан.
  4. Массив упорядочен по возрастанию, и число aa, о котором известно следующее: оно не равно ни одному из элементов массива, больше первого и меньше последнего элемента. Вывести все элементы массива, меньшие aa.
  5. Если в массиве есть хотя бы одна пара одинаковых соседних элементов, то напечатать все элементы, следующие за элементами первой из таких пар. В противном случае на экран должно быть выведено соответствующее сообщение НЕТ.
  6. Если в массиве есть элементы, большие заданного числа aa, то напечатать все элементы, следующие за первым из таких элементов. В противном случае на экран должно быть выведено соответствующее сообщение НЕТ.
  7. Вывести все индексы элементов, равных максимальному, кроме второго. Если максимум ровно один, то вывести просто его индекс. Гарантируется, что массив содержит хотя бы два максимума.

Ссылка на контест