У нас есть множество интервалов [angle1,angle2]
. Я хочу узнать оптимальное значение theta [-180,180]
, которое лежит в максимальном числе интервалов. Значение theta может быть плавающим. Я попытался с линейным поиском и проверить все интервалы, но поскольку значение тета может быть плавающим, я думаю, что даже бинарный поиск не может работать.Сегмент Interval Поиск
ответ
Сортируйте начальные и конечные значения интервалов в один список с соответствующим значением для «S» или «E» для каждого из них.
Просмотрите список, когда вы нажмете приращение S счетчика, когда вы нажмете на E декремент счетчика. Если счетчик выше, чем наибольшее значение, которое до сих пор помнит значения S и E для этого сегмента.
Для случая обертывания просто разделите каждый интервал, который обертывает (то есть угол2 < angle1) на две части, одну с обеих сторон от нуля. Добавьте [angle1,360] и [0, angle2] в качестве новых интервалов в стартовый набор.
Спасибо @Ian Mercer Это выглядит хорошо для меня, я не могу поддержать ваш ответ, но он, безусловно, решит мою проблему. Как только у меня будет достаточно рейтинга, я отвечу на ваш ответ. –
будет работать как для формата [0,360], так и [-180,180]? –
Он будет работать для обоих, но он не обрабатывает обертку вокруг футляра ... пока ... –
Двоичный поиск работает абсолютно нормально на поплавках ... –
Вы можете уточнить немного больше? Что вы подразумеваете под «максимальным интервалом»? – Rishav
@ cricket_007 Я согласен, что бинарный поиск абсолютно работает на поплавках, но в контексте проблемы, как мы можем применить двоичный поиск, не могли бы вы рассказать о нем. –