Я ищу самый быстрый способ решить, находится ли точка в строке внутри подмножества этой строки. мне дают целую точку, и у меня также есть «список» или:Как найти, находится ли точка в пределах набора интервалов?
- очки, представленные целым числом (3, 10, 1000 и т.д.)
- интервалы, которые я представляю на 2 целые числа (2:10 - все целые числа от 2 до 10 включительно, 50:60 и т. д.)
В этом примере, если значение моей точки равно 5, тогда я возвращаю true, потому что он включен в интервал , то же самое для 55. Если моя точка равна 1000, я также возвращаю true, потому что она соответствует списку точек.
Я ищу быстрый способ (более быстрый, чем линейный), чтобы проверить это условие, НЕ ИСПОЛЬЗУЯ, КАСАЮЩИСЯ Целочисленного числа, что и возможные точки (т. Е. Для интервала 1: 1000 я не хочу вводить в действие 1000 целых чисел). Можно ли это сделать в логарифмическом времени?
Благодаря
редактировать: вы можете считать, что любое время, необходимое для предварительной обработки списка данных равно 0, потому что как только мои начальные интервалы перерабатываются мне нужно применить этот тест 10k точек
Возможны ли интервалы перекрытия? Я не знаю точно, если это имеет значение, но, похоже, должно. – Almo
они могли бы, но я могу предварительно обработать свои данные, чтобы они больше не работали, что не является проблемой по времени, потому что я использую одни и те же интервальные множества, чтобы обрабатывать 10k точек. – lezebulon
Заказываются ли они? – Freddy