Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/120: Рейтинг темы: голосов - 120, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 11.04.2020
Сообщений: 8

Напишите программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз

11.04.2020, 19:34. Показов 24784. Ответов 16

Студворк — интернет-сервис помощи студентам
Напишите программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз.

Входные данные:
Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 0 < N ≤ 1000 . В третьей строке записано натуральное число K .

Выходные данные
Программа должна вывести все элементы массива, которые встречаются ровно K раз, в порядке возрастания, разделив их пробелами. Если таких элементов нет, программа должна вывести число 0.

Примеры
Входные данные
6
1 2 1 2 1 3
2

Выходные данные
2


Заранее -- огромное спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2020, 19:34
Ответы с готовыми решениями:

Напишите программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз
Написать программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз. Входные данные Первая...

Отсортировать массив и вывести все элементы массива, которые встречаются ровно K раз
Напишите программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз. Входные данные: Первая...

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

16
8 / 6 / 2
Регистрация: 09.04.2020
Сообщений: 31
11.04.2020, 20:03
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n=int(input())
a = input()
a = a.split()
k = int(input())
h=0
s=1
r=[]
for i in range(n-1):
    h+=1
    for j in range(n-h):
        if a[i]==a[j+h]:
            s+=1
    if s==k and a[i] not in r:
        r.append(a[i])
        s=1
print(r)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
11.04.2020, 20:13
Лучший ответ Сообщение было отмечено Xeib9 как решение

Решение

Python
1
2
3
4
n = int(input())
a = list(map(int, input().split()))
k = int(input())
print(*(sorted(x for x in set(a) if a.count(x) == k) or [0]))
2
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
11.04.2020, 20:16
Ввод массива, n,k - сделаете самостоятельно.
Python
1
2
3
4
a=[1, 2, 1, 2, 1,3, 3]
k=2
ans=sorted([i for i in set(a) if a.count(i)==k])
print(*ans)
Добавлено через 36 секунд
Jabbson, опередил.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
11.04.2020, 20:17
Python
1
2
3
4
n = int(input())
a = list(map(int, input().split()))
k = int(input())
print(*(sorted(x for x in set(a) if a.count(x) == k) or [0]))
Цитата Сообщение от u235 Посмотреть сообщение
Jabbson, опередил.
а как же
Цитата Сообщение от Xeib9 Посмотреть сообщение
Если таких элементов нет, программа должна вывести число 0.
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
11.04.2020, 20:36
А это уже моя невнимательность при чтении условий задачи.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
11.04.2020, 20:38
там еще сортировать массив нужно было, но я не уверен с какой целью (наверное, чтобы искать повторения было "проще").
0
11.04.2020, 20:42

Не по теме:

Да, действительно, но на результат это не влияет. Что сортировать исходный массив, что выходной

0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
11.04.2020, 20:44
Цитата Сообщение от u235 Посмотреть сообщение
Сортировку я не забыл.
Я полагаю, имелась ввиду сортировка изначального массива.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
11.04.2020, 23:04
сортировка O(n*logn), дальше groupby для подсчета ответа за O(n).
А count это O(n^2) - "квадрат".
Все просто!
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
11.04.2020, 23:16
Цитата Сообщение от eaa Посмотреть сообщение
Все просто!
Ну если мы в погоне за производительностью, то использование питона изначально так-то нецелесообразно.

Добавлено через 1 минуту
Цитата Сообщение от eaa Посмотреть сообщение
А count это O(n^2) - "квадрат".
почему квадрат? не достаточно просто один раз пройти по всему листу?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
11.04.2020, 23:21
Цитата Сообщение от Jabbson Посмотреть сообщение
сортировать массив нужно было, но я не уверен с какой целью
Это чтобы поиск был быстрым.

Ваш вариант:
Python
1
2
def counting2(arr,k):
    return sorted(x for x in set(arr) if arr.count(x) == k) or [0]
Python
1
arr = [random.randint(1,1000) for i in range(1000)]
Code
1
2
%timeit -n 10 -r 10 counting2(arr,6)
23.5 ms ± 331 µs per loop (mean ± std. dev. of 10 runs, 10 loops each)
C помощью сортировки подсчетом ровно за два цикла:
Python
1
2
3
4
5
6
7
8
9
10
11
12
def counting(arr, k):    
    max_elem = max(arr) + 1
    count = [0] * max_elem
      
    for element in arr:
        count[element] += 1
     
    result = []
    for element in set(arr):
        if count[element] == k:
            result.append(element)
    return result or [0]
Code
1
2
%timeit -n 10 -r 10 counting(arr,6)
345 µs ± 14.6 µs per loop (mean ± std. dev. of 10 runs, 10 loops each)
Это потому что у варианта с count квадратичная сложность :-)

Почему здесь разумно применить сортировку подсчетом? Потому что условие "Гарантируется, что 0 < N ≤ 1000"
0..1000 - небольшой диапазон. Совсем немного памяти, но в 100 раз быстрее.
1
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
11.04.2020, 23:31
Цитата Сообщение от Garry Galler Посмотреть сообщение
Потому что условие "Гарантируется, что 0 < N ≤ 1000"
а может это гарантируется, чтобы таким образом сказать - "там всего 1000 элементов, не парьтесь и пользуйтесь count"
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
11.04.2020, 23:33
Цитата Сообщение от Jabbson Посмотреть сообщение
чтобы таким образом сказать - "там всего 1000 элементов, не парьтесь и пользуйтесь count"
Вряд ли. Обычно программы с count не проходят тестов по времени выполнения.
Но тут могут быть еще и ограничения по памяти. Тогда и мой вариант может не пройти.
0
11.04.2020, 23:37

Не по теме:

Garry Galler, действительно некоторые думают что count "бесплатный", как Вы высказались в одном из обсуждений.

0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
12.04.2020, 17:59
del
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
12.04.2020, 18:04
сам count подсчет за O(n), если count в фильтре применять то получим O(n^2)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2020, 18:04
Помогаю со студенческими работами здесь

Вывести все элементы массива, которые встречаются ровно K раз
Напишите программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз. Входные данные Первая...

Сортировать массив и вывести все элементы, которые встречаются ровно K раз
Напишите программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз. Входные данные ...

Отсортировать массив и вывести элементы массива, которые встречаются ровно K раз
Напишите программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз. Входные данные Первая...

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

Напишите программу, которая выделяет в другой массив все элементы исходного массива, которые меньше нуля
Здравствуйте, помогите написать программу на pascal,спасибо.Напишите программу, которая выделяет в другой массив все элементы исходного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru