Учитывая массив целых чисел и целочисленное значение K моя задача - написать функцию, которая печатает на стандартном выходе наибольшее число для этого значения в массиве и прошлых записей K перед ним ,Python FInd Наибольшее число в последних элементах k
Пример ввода:
tps: 6, 9, 4, 7, 4, 1
k: 3
Результат:
6
9
9
9
7
7
Мне сказали, что код, который я написал можно было бы сделать гораздо более эффективной для больших наборов данных. Как я могу сделать этот код наиболее эффективным?
def tweets_per_second(tps, k):
past = [tps[0]]
for t in tps[1:]:
past.append(t)
if len(past) > k: past = past[-k:]
print max(past)
Я не понимаю, как ваш ввод дает этот вывод. Почему вы получаете несколько '9' 'и' 7''? –
@Adam: для каждого члена массива он печатает максимальное значение прошлых членов K (включая текущий элемент). – Ani
Вы можете использовать максимальную кучу с точностью до k элементов (http: //en.wikipedia.орг/вики/Heap_ (data_structure)). Сложностью будет O (nlogk), и это оптимально, я считаю. – Jarlax