В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов. То есть дан массив, в котором есть нулевые значения. Например: 2 0 3 3 0 1 2 0. Требуется создать массив из номеров этих нулевых значений. Например: 2 5 8.
Ответы на вопрос
Самая простая идея — пройти по массиву и записать индексы тех позиций, где стоит 0.
Важно заранее договориться об индексации:
-
Если требуются человеческие номера (как в условии:
2 5 8), то это 1-based индексация. -
Если нужны машинные индексы (как в большинстве языков), то это 0-based индексация.
Ниже — оба варианта.
Алгоритм
-
Завести пустой список
idx. -
Пройти по массиву слева направо.
-
Если текущий элемент равен нулю, добавить его позицию:
-
для 1-based: добавить
i + 1; -
для 0-based: добавить
i.
-
-
Вернуть
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 (0-based индексация):
C++ (1-based индексация):
JavaScript (1-based индексация):
Пограничные случаи
-
Нулей нет → результат пустой массив.
-
Все элементы нули → индексы всего диапазона.
-
Повторяющиеся нули подряд обрабатываются так же, каждый индекс фиксируется отдельно.
Итого: пройти массив один раз и собрать индексы нулей; для примера ответ — 2 5 8 при 1-based индексации.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

