我有一张非常稀疏的桌子,尺寸很大。
即,我的表的索引可能非常大,但表中的元素数量非常少。
我一直在为此考虑一个数据结构。
我排除了rows x cols表格,因为查找行/列中的所有元素需要太多内存和太多时间。
相反,我想到了使用两个地图:rows和cols。
让我们看看rows。键是行索引,键的值是 rowk中所有元素的列号列表k。
示例(1 表示那里存在一个元素):
0 1 0
1 0 1
将是这张rows地图:
0: [1]
1: [0, 2]
我会保留一个类似的cols映射,其中键是列号,键的值k是列中所有元素的行号列表k。
当我想删除k表中的一行时,我会这样做:
del rows[k]
但这不会从cols地图中删除顶点。我将不得不遍历删除某些元素的所有列,并从cols地图中删除每个元素。
有没有O(1)办法做到这一点?