У меня есть массив какНайти макс (и мин) на подвижном интервале с помощью Python
[5.5, 6.0, 6.0, 6.5, 6.0, 5.5, 5.5, 5.0, 4.5].
всех чисел этого массива различаются по 0,5, а максимальная разность двух последовательных чисел также 0,5 (они могут быть такими же, как в примере). и есть подвижный интервал, или ящик, который охватывает, например, 3 последовательные номера, например:
[(5.5, 6.0, 6.0), 6.5, 6.0, 5.5, 5.5, 5.0, 4.5] # min: 5.5, max: 6.0
и коробка движется к правой по одному:
[5.5, (6.0, 6.0, 6.5), 6.0, 5.5, 5.5, 5.0, 4.5] # min: 6.0, max: 6.5
[5.5, 6.0, (6.0, 6.5, 6.0), 5.5, 5.5, 5.0, 4.5] # min: 6.0, max: 6.5
вопрос является , как я могу найти min и max чисел внутри поля для каждого окна времени?
Я могу обработать его, когда размер блока и массива мал, как этот пример, но мне нужно применить его к размеру массива размером 100000 и размеру коробки 10000. Используя мой метод (я вычисляю каждый макс и мин, используя for- цикл для каждого окна времени проходит), потребовалось слишком много времени (у меня есть еще 100 массивов, которые нужно выполнить и нужно многократно запускать). Существует некоторое ограничение по времени, поэтому мне нужно запустить его, как один расчет за 0,5 секунды.
Подумайте об этом - каждый раз, когда вы * «перемещаете окно» *, вы бросаете первое число и получаете новый последний номер, поэтому во многих случаях min и max вообще не изменятся или будут тривиальными обновить. Вы на самом деле * попробовали * реализовать это? – jonrsharpe
@jonrsharpe Если тот, который мы бросаем, является старым max/min, нам придется снова искать всю ячейку для новой. –
@PeterWood это правильно, но * только * в этом случае. – jonrsharpe