我无法弄清楚哪种数据结构最适合此类问题:
我有一个圈子。它可以在不同的位置(角度)进行切割。切割之间的部分有颜色(比如红色或黑色)。如果没有切口,所有圆圈都有一种颜色。
我需要对其进行哪些操作?
[1] 更改段的颜色。
[2] 在某个角度添加切割。
[3] 对于给定的角度,告诉它属于哪个段。
[4] 连接相同颜色的连续片段。
现在我有一个 Segment 的类来存储它的末端和颜色的角度。和 ArrayList 一起工作。
我遇到的问题:
[1]我想要比 ArrayList 更快的东西。(TreeSet?还有别的吗?)
[2]我将没有切割的圆形视为特例。(0 和 0 处的两个假削减)
[3]我将包含 0 角的段视为特殊情况。说段 (7pi/8, pi/8) 和 (pi/8, 7pi/8) 需要不同的方法和大量的 if 条件。