Я пытаюсь решить проблему, которая была поставлена на собеседовании. Я не смог решить его во время собеседования, поэтому я прошу вас о помощи, чтобы это знать.магазин в течение 10 минут окна
Проблема заключается в том:
Напишите класс с методом, который принимает целое число и возвращает целое число, наибольшее значение, что метод был вызван с в последние десять минут.
Из того, что я понимаю, я должен хранить все значения, которые был вызван методом в течение последних 10 минут. Значения должны храниться в эффективной структуре данных, потому что этот метод может вызываться несколько раз в секунду.
Есть ли у вас какие-либо предположения относительно того, какая структура данных должна быть более эффективной для этого? Кроме того, поскольку это время перетаскивания окна, как я могу очистить значения, срок действия которых истек?
И какой должен быть лучший способ получить максимальное значение, в зависимости от используемой структуры данных?
У меня есть базовый код:
private final static ScheduledExecutorService EXECUTOR_SERVICE = Executors.newSingleThreadScheduledExecutor();
private static List<Integer> values = new ArrayList<Integer>();
public int method(final int value){
values.add(value);
// Task to remove the key-value pair
Runnable task = new Runnable() {
@Override
public void run() {
values.remove(value);
}
};
// Schedule the task to run after the delay
EXECUTOR_SERVICE.schedule(task, 60, TimeUnit.SECONDS);
//TODO get the max value
return 1;
}
планировщик переполнен, лучше делать чистые только при поступлении новых записей (или запрашивается «max»). – tucuxi