このタイプの問題に最適なデータ構造がわかりません。
私はサークルを持っています。異なる位置(角度)でカットすることができます。カット間のセグメントには色があります (たとえば、赤または黒)。カットがなければ、すべての円は 1 色になります。
どのような操作が必要ですか?
[1] セグメントの色を変更します。
[2] 角度をつけてカットを加える。
[3] 与えられた角度について、それがどのセグメントに属しているかを教えてください。
[4] 同じ色の連続するセグメントを結合します。
現在、端と色の角度を格納するセグメントのクラスがあります。そしてそれを操作するArrayList。
私が抱えている問題:
[1]ArrayList よりも高速なものが必要です。(TreeSet? 何か他のもの?)
[2]カット無しの円は特例として扱っております。(0 と 0 の 2 つのフェイク カット)
[3]角度が 0 のセグメントを特殊なケースとして扱っています。セグメント (7pi/8, pi/8) と (pi/8, 7pi/8) には、異なるアプローチと大量の if 条件が必要だとします。