2017-01-21 7 views
2

間隔は[angle1,angle2]です。私は、区間の最大数にあるtheta [-180,180]の最適値を知りたいと思います。シータの値は浮動小数点にすることができます。私は線形検索とすべての間隔をチェックしようとしましたが、テータの値が浮動小数点になる可能性があるので、バイナリ検索でさえもうまくいかないと思います。セグメント間隔検索

+0

バイナリ検索は、浮動小数点で絶対に問題なく動作します... –

+0

もう少し詳しく説明できますか? 「最大間隔」という意味はどういう意味ですか? – Rishav

+0

@ cricket_007私はバイナリ検索が絶対に浮動体で動作することに同意しますが、問題のコンテキストでバイナリ検索を適用するにはどうすればいいですか? –

答えて

3

間隔の開始値と終了値を、それぞれに対応する 'S'または 'E'の値を持つ単一のリストにソートします。

カウンタをEインクリメントしたときにカウンタを増加させると、カウンタが増加します。カウンターがこれまでに見た最高値よりも高い場合、そのセグメントのS値とE値を覚えておいてください。

ラップアラウンドの場合は、ラップする間隔(angle2 < angle1)を2つに分割するだけで、いずれかの側がゼロになります。 [angle1,360]と[0、angle2]を新しい間隔として開始セットに追加します。

+0

ありがとう@Ian Mercerこれは私には良く見えますが、私はあなたの答えをupvoteすることができませんが、確かに私の問題を解決します。私は十分な評価を得たら、私はあなたの答えをupvoteします。 –

+0

[0,360]と[-180,180]の両方のフォーマットで使えますか? –

+0

でも、ラップアラウンドのケースを処理しないでもどちらでも動作します...まだ... –

関連する問題