Реализуйте программу, которая осуществляет сжатие массива - заменяет все повторяющиеся элементы нулями и перемещает

  • 25
Реализуйте программу, которая осуществляет "сжатие массива" - заменяет все повторяющиеся элементы нулями и перемещает все нулевые элементы в конец массива. При этом оставшиеся элементы остаются в начале массива в том же порядке, что и в исходном массиве. Вводные данные: первая строка содержит размер массива n. Вторая строка состоит из n чисел - элементов массива. Гарантируется, что 0 < n ≤ 10000. Выходные данные: программа должна вывести все элементы получившегося массива в одной строке, разделенные пробелами. Пример ввода: 6 0 1 2 1 2 3. Пример вывода: 1 2 3 0 0 0.
Laki
10
Хорошо, давайте решим эту задачу пошагово.

Шаг 1: Чтение входных данных
Но, прежде чем мы начнем, давайте считаем входные данные. Первое число n - это размер массива, а вторая строка - это сами элементы массива. Давайте разделим эту строку на отдельные числа и запомним их.

python
n = int(input()) # Считываем размер массива
array = list(map(int, input().split())) # Считываем элементы массива и превращаем их в список чисел


Шаг 2: Удаление повторяющихся элементов и перемещение нулей
Теперь нам нужно удалить повторяющиеся элементы и переместить все нули в конец массива. Мы можем использовать множество для хранения уникальных элементов, а затем перезаписать исходный массив только уникальными элементами.

python
unique_elements = set() # Создаем множество для хранения уникальных элементов
result = [] # Создаем пустой список для нового массива

for element in array:
if element != 0 and element not in unique_elements: # Если элемент не является нулем и еще не встречался
unique_elements.add(element) # Добавляем его в множество уникальных элементов
result.append(element) # Добавляем его в новый массив

# Добавляем нули в конец нового массива
zeros_count = array.count(0) # Считаем количество нулей в исходном массиве
result += [0] * zeros_count



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

python
print(*result)


Вот полная программа, которая решает данную задачу:

python
n = int(input()) # Считываем размер массива
array = list(map(int, input().split())) # Считываем элементы массива и превращаем их в список чисел

unique_elements = set() # Создаем множество для хранения уникальных элементов
result = [] # Создаем пустой список для нового массива

for element in array:
if element != 0 and element not in unique_elements: # Если элемент не является нулем и еще не встречался
unique_elements.add(element) # Добавляем его в множество уникальных элементов
result.append(element) # Добавляем его в новый массив

# Добавляем нули в конец нового массива
zeros_count = array.count(0) # Считаем количество нулей в исходном массиве
result += [0] * zeros_count

print(*result)


Надеюсь, этот пошаговый ответ помог вам понять, как решить данную задачу. Если у вас есть еще вопросы, не стесняйтесь задавать!