Вопрос задан 25.11.2025 в 07:19. Предмет Информатика. Спрашивает Мухаметзянова Элина.

В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов. То есть дан массив, в котором есть нулевые значения. Например: 2 0 3 3 0 1 2 0. Требуется создать массив из номеров этих нулевых значений. Например: 2 5 8.

Перейти к ответам

Ответы на вопрос

Отвечает Кособуцький Микола.

Самая простая идея — пройти по массиву и записать индексы тех позиций, где стоит 0.

Важно заранее договориться об индексации:

  • Если требуются человеческие номера (как в условии: 2 5 8), то это 1-based индексация.

  • Если нужны машинные индексы (как в большинстве языков), то это 0-based индексация.

Ниже — оба варианта.

Алгоритм

  1. Завести пустой список idx.

  2. Пройти по массиву слева направо.

  3. Если текущий элемент равен нулю, добавить его позицию:

    • для 1-based: добавить i + 1;

    • для 0-based: добавить i.

  4. Вернуть idx.

Сложность: O(n) по времени и O(k) по памяти, где k — число нулей.

Пример на входных данных

Вход: 2 0 3 3 0 1 2 0
Нулевые позиции:

  • 1-based: 2 5 8

  • 0-based: 1 4 7

Примеры кода

Python (1-based индексация):

python
a = [2, 0, 3, 3, 0, 1, 2, 0] idx = [i + 1 for i, x in enumerate(a) if x == 0] print(idx) # [2, 5, 8]

Python (0-based индексация):

python
a = [2, 0, 3, 3, 0, 1, 2, 0] idx0 = [i for i, x in enumerate(a) if x == 0] print(idx0) # [1, 4, 7]

C++ (1-based индексация):

cpp
#include using namespace std;

int main() { vector<int> a = {2, 0, 3, 3, 0, 1, 2, 0}; vector<int> idx; for (size_t i = 0; i < a.size(); ++i) { if (a[i] == 0) idx.push_back((int)i + 1); } // вывод: 2 5 8 for (size_t i = 0; i < idx.size(); ++i) { if (i) cout << ' '; cout << idx[i]; } return 0; }

JavaScript (1-based индексация):

js
const a = [2, 0, 3, 3, 0, 1, 2, 0]; const idx = a.reduce((res, x, i) => { if (x === 0) res.push(i + 1); return res; }, []); console.log(idx); // [2, 5, 8]

Пограничные случаи

  • Нулей нет → результат пустой массив.

  • Все элементы нули → индексы всего диапазона.

  • Повторяющиеся нули подряд обрабатываются так же, каждый индекс фиксируется отдельно.

Итого: пройти массив один раз и собрать индексы нулей; для примера ответ — 2 5 8 при 1-based индексации.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Информатика 14.10.2025 04:57 30 Бердина Раиса
Информатика 13.10.2025 21:53 24 Кандрина Лера
Информатика 13.10.2025 20:34 16 Калинин Максим
Информатика 13.10.2025 20:27 6 Смирнов Егор
Информатика 13.10.2025 19:26 4 Макаров Максим
Информатика 13.10.2025 19:20 16 Гайнанов Эльнар
Информатика 13.10.2025 18:25 6 Bekenov Daulet
Информатика 13.10.2025 18:16 22 Александровна Вероника
Задать вопрос