我试图找出解决以下问题的最佳方法。
我需要在地图上绘制路线。我有一个有序的颜色池,我想从中挑选。如果第一种颜色可用(尚未使用),我想使用该颜色。如果使用第一种,我想使用第二种颜色,依此类推。另外,我画的路线可以分组。因此,如果组相同,它们可能会共享相同的颜色。
这是一个例子:
颜色列表(订单事项):蓝色,红色,绿色,黄色......
- 第一条路线是A组。蓝色可用:BLUE
- 第二条路线是 B 组。蓝色不可用。红色可用:RED
- 第三条路线是 A 组。A 组已经在使用蓝色,所以使用:蓝色
- 第二条路线被删除
- 第四条路线是 C 组。蓝色不可用。红色可用:RED
- 第五条路线是 D 组。蓝色和红色不可用。绿色可用:绿色
我正在讨论这种系统的最佳数据结构是什么。我需要维护颜色及其顺序,哪些组已“签出”颜色,以及何时可以将颜色“释放”回可用选择池中。
有什么建议么?
编辑:
我目前的策略是使用两种数据结构。首先是一个字典,其中键是组名,值是正在使用的颜色,所以我知道谁当前正在使用什么颜色。第二个结构将是一个堆栈,用于维护可用颜色的顺序。
所以当我想添加一个新的路由时,我首先去字典检查我的组名是否存在。如果是这样,我将使用指定的颜色。如果没有,我将从堆栈中提取下一个可用颜色,然后将我的组合添加到字典中。
与此相关的问题是,它不会使用颜色维护每个组中有多少条路线的计数。因此,假设我在 A 组中有两条使用蓝色的路线。我删除了一条路线。我如何知道是否还有其他 A 组路线仍在使用蓝色?我不知道我是否可以将蓝色放回堆栈。