Только оценка 63% вместо 100% — программа Python [закрыто]Python

Программы на Python
Anonymous
Только оценка 63% вместо 100% — программа Python [закрыто]

Сообщение Anonymous »

У меня есть программа на Python3, и она дает правильные результаты, но я хочу улучшить временную сложность этой программы.
Когда я запускаю ее на платформе, вместо этого я получаю максимум 63% баллов. 100 %, поскольку некоторые тесты занимают много времени.
Постановка задачи
В списке целых чисел повторение представляет собой пару одинаковых чисел. которые примыкают друг к другу. Например, в списке 1 3 3 4 2 2 1 1 1 четыре повторения: две тройки, затем две двойки, затем две последующие единицы и, наконец, две единицы в конце списка.< /p>
Вам дан список целых чисел. Напишите программу, которая вычисляет минимальное количество повторений, которое может остаться в списке после удаления всех вхождений одного из чисел.
Вывод
Вам следует вывести одно число: минимальное количество повторений, которое может остаться после удаления всех вхождений одного из чисел в списке.
Примеры
Вот пример ввода:

Код: Выделить всё

liste = [1, 3, 2, 2, 3, 4, 4, 2, 1]
Список из 9 чисел: «1 3 2 2 3 4 4 2 1». Он содержит два повторения (первые две двойки и две четверки):
  • При удалении единиц остаются два повторения;
    < li>Удаление двойок объединяет тройки, поэтому мы удалили одно повторение и добавили одно. Осталось еще два повторения;
  • Удаление троек оставляет два повторения;
  • Удаление четверок оставляет только одно повторение.
Если удалить все вхождения числа 4, останется только одно повторение. Получить меньшее значение невозможно, поэтому ваша программа должна вывести: Ограничения
  • Ограничение по времени: 1000 мс.
  • Ограничение памяти: 64 000 Кб.
Ограничение по времени установлено таким образом, что решение, которое повторяется небольшое количество раз по всему списку, может набрать полные баллы, но решение который для каждого числа в списке, циклически перебирая все остальные числа в списке, позволяет решить только около половины тестов, не превышая лимит времени.
Решение 1

Код: Выделить всё

lst = [1, 3, 2, 2, 3, 4, 4, 2, 1]
# lst = [1,3,3,4,2,2,1,1,1]

def count_repetitions(lst):
count = 0
for i in range(1, len(lst)):
if lst[i] == lst[i - 1]:
count += 1
return count

unique_numbers = set(lst)
min_repetitions = float('inf')

for num in unique_numbers:
filtered_list = [x for x in lst if x != num]
repetitions = count_repetitions(filtered_list)
min_repetitions = min(min_repetitions, repetitions)

print(min_repetitions)

Решение 2

Код: Выделить всё

liste = [1, 3, 2, 2, 3, 4, 4, 2, 1]
# liste = [1,3,3,4,2,2,1,1,1]

repmin=100000
listunique =[]

for v in liste:
if v not in listunique:
listunique.append(v)

for x in listunique:
listWithoutx = []
for i in liste:
if i!=x:
listWithoutx.append(i)
rep=0
for j in range(len(listWithoutx)-1):
if listWithoutx[j]==listWithoutx[j+1]:
rep+=1
if rep

Подробнее здесь: [url]https://stackoverflow.com/questions/78684013/only-score-of-63-instead-of-100-python-program[/url]

Вернуться в «Python»