я получил следующий вопрос:
Предположим, у вас есть массив A с n отличительными номерами, и предположим, что вы можете хранить n-элементы в новой структуре данных (которая может помочь вам в решении вопроса ниже), сохраняя при этом, что время хранения ограничено O (n) ,
Напишите алгоритм для функции max (i, j), который получит в качестве входных данных два индекса i, превышающих j, и вернет в качестве выходных данных максимум между A [i], A [i + 1], ..., A [ J]. max (i, j) должно быть ограничено O (log (n)).
Я думал о двоичном дереве, но не мог понять, почему хранить числа. Один из вариантов, который я мог бы подумать о том, чтобы занять O (n) времени хранения, - это создание «дерева турниров», но мне не удалось найти алгоритм для максимального использования такой структуры данных.
Это вопрос домашнего задания, но не удалось найти для него тег.