Вы можете создать другой массив, где значения - это число значений в целевом массиве, превышающее индекс.Затем, чтобы найти число в пределах диапазона, вам просто нужно найти [max] - a [min].
Чтобы создать массив, вы можете перебирать целевой массив, увеличивая значение на индекспоисковый массив (это O (n)).Затем вы перебираете поисковый массив в обратном порядке, делая каждое значение суммой самого себя и всех значений после него в массиве (O (k), если k - диапазон данных).Конечно, для этого потребуется совсем немного памяти, в зависимости от размера вашего массива, но он будет иметь требуемые характеристики производительности.