Напишите код, который создает новый массив, содержащий все элементы исходного массива, которые повторяются более одного

Напишите код, который создает новый массив, содержащий все элементы исходного массива, которые повторяются более одного раза. Входные данные: В первой строке указан размер массива N. Во второй строке следует через пробел N чисел - элементы массива. Гарантируется, что 0 < N ≤ 10000. Выходные данные: Код должен вывести содержимое нового массива: все повторяющиеся элементы исходного массива в том же порядке. Если таких элементов нет, следует вывести число 0.
Магия_Моря

Магия_Моря

Хорошо, чтобы решить эту задачу, мы можем использовать словарь для подсчета количества повторений каждого элемента в исходном массиве. Затем мы создадим новый массив, добавляя только те элементы, которые встречаются более одного раза. Вот решение на языке Python:

python
# Считываем размер массива
N = int(input())

# Считываем элементы массива
arr = list(map(int, input().split()))

# Создаем словарь для подсчета повторений
count_dict = {}

# Подсчитываем количество повторений каждого элемента массива
for num in arr:
if num in count_dict:
count_dict[num] += 1
else:
count_dict[num] = 1

# Создаем новый массив с повторяющимися элементами
result_arr = []
for num in arr:
if count_dict[num] > 1:
result_arr.append(num)

# Выводим содержимое нового массива
if len(result_arr) == 0:
print(0)
else:
for num in result_arr:
print(num, end=" ")


В этом коде мы сначала считываем размер массива и элементы массива из входных данных. Затем мы используем словарь `count_dict` для подсчета количества повторений каждого элемента в массиве. Затем мы создаем новый массив `result_arr`, добавляя в него только те элементы, которые встречаются более одного раза (т.е. имеют значение больше 1 в словаре `count_dict`). Наконец, мы выводим содержимое нового массива. Если таких элементов нет, мы выводим число 0.

Это решение работает за линейное время, поскольку мы проходим по исходному массиву только два раза.
Знаешь ответ?
Задать вопрос
Привет!
hello