2017-01-21 69 views
2

我們有一組間隔[angle1,angle2]。我想找出theta [-180,180]的最佳值,它位於最大間隔數中。 Theta的價值可以浮動。我嘗試過使用線性搜索並檢查所有間隔,但由於theta的值可能是浮點數,我認爲即使二分搜索也無法工作。段間隔搜索

+0

二進制搜索對浮點數絕對沒問題...... –

+0

你能詳細說一下嗎? 「最大間隔時間」是什麼意思? – Rishav

+0

@ cricket_007我同意二進制搜索絕對在浮動工作,但在問題的上下文中,我們如何應用二進制搜索,你可以請一些燈光。 –

回答

3

將間隔開始和結束值分類到單個列表中,每個列表中的值爲'S'或'E'。

掃描列表,當你點擊一個S時遞增一個計數器,當你點擊一個E時遞減一個計數器。如果計數器高於迄今爲止所看到的最高值,請記住該段的S和E值。

對於環繞的情況,只需將每個包裹的間隔(即角度2 < angle1)分成兩部分,一部分爲零。將[angle1,360]和[0,angle2]作爲新的間隔添加到起始集中。

+0

謝謝@Ian Mercer這對我來說看起來不錯,我無法對upvote你的答案,但它肯定會解決我的問題。一旦我有足夠的評價,我會upvote你的答案。 –

+0

它將適用於[0,360]和[-180,180]格式嗎? –

+0

這將工作或者但它不處理環繞案件......還有... –