我正在尝试为一组对象执行特别昂贵的计算,并且我想知道是否有更高效的数据结构或算法。
假设我们有一组可以枚举的N
(~1k)项,因此我们可以将它们编入索引并将它们表示为整数。对于这些事情中的每一件事,我都想跟踪一个特定的状态。但一般来说,唯一状态的数量将远远小于N
,最多N/10
,但通常接近N/1000
。
要表示此地图,我们可以:
在我的代码的热路径中,我需要获取2个这样的地图并合并它们,以便更新每个项目的状态。如果执行合并的成本为k
,则给定数组表示的运行时间为O(kN)
。通常,k
的成本按查找顺序排列,因此记忆技术无济于事。这看起来很浪费,因为我知道一般来说我只有N/1000
个唯一值。另一个考虑因素是这些地图的存储要求。存储N
项是多余的,甚至可以枚举所有项目(#4地图)。
我可以做得更好吗?
谢谢。