Оптимизация прохождения длинного списка? [закрыто]Python

Программы на Python
Ответить
Anonymous
 Оптимизация прохождения длинного списка? [закрыто]

Сообщение Anonymous »

Задача состоит в том, чтобы сделать код, который проходит список из 1,2 ... n, где числа размещаются случайным образом, и подсчитывать количество итераций, которые требуются, чтобы получить все числа, начиная с 1
, например, [например [ 1,2,3,4] займет одну итерацию, в то время как [1,3,2,4] займет два, один, где взято 1,2, и одна, где 3,4 взят.
Но это упражнение просит вас «реализовать функцию count_rounds, которые принимают список в качестве параметра и возвращает количество раундов. Раунд. Заказ и количество раундов составляет 10^5. Тест (около 10 с) < /p>
Я попытался удалить элементы из списка, но я искренне не могу понять, как сделать его достаточно быстрым, чтобы пройти тест (около 10 с)
Текущая попытка: < /p>

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

    def count_rounds(numbers):
n = len(numbers)

result = 0
x=1
while xnumbers[x]:
result+=1
except:
break
x+=1
return result+1

if __name__ == "__main__":
print(count_rounds([2, 5, 4, 1, 3])) # 4
print(count_rounds([1, 3, 2, 4])) # 2
print(count_rounds([4, 3, 2, 1])) # 4
print(count_rounds([1])) # 1
print(count_rounds([2, 1, 4, 7, 5, 3, 6, 8])) # 4

n = 10**5
numbers = list(reversed(range(1, n+1)))
print(count_rounds(numbers)) # 100000
хэштег соответствует ожидаемому результату, а именно:

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

3
2
4
1
4
100000
вместо этого.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -long-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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