Я прочитал несколько руководств о двух общих структурах данных, которые могут обеспечить обновление диапазона и запрос в O (lg N): Дерево сегментов и двоичное индексированное дерево (BIT/Fenwick Tree).
Большинство примеров, которые я нашел, - это некоторые ассоциативные и коммутативные операции, такие как "Сумма целых чисел в диапазоне", "Целочисленные числа XOR в диапазоне" и т.д.
Интересно, могут ли эти две структуры данных (или любые другие структуры данных/алгоритм предложить) можно выполнить следующий запрос в O (lg N)? (Если нет, как насчет O (sqrt N))
Если задан массив целых чисел A, запросите количество различных целых чисел в диапазоне [l, r]
PS: Предполагая, что число доступных целых чисел равно ~ 10 ^ 5, поэтому used[color] = true
или bitmask не возможно
Например: A = [1,2,3,2,4,3,1], query ([2,5]) = 3, где индекс диапазона основан на 0.