巨大なディメンションを持つ非常にまばらに満たされたテーブルがあります。
つまり、テーブルのインデックスは非常に大きくなる可能性がありますが、テーブル内の要素の数は非常に少なくなります。
そのためのデータ構造を考えています。
rows x cols
行/列内のすべての要素を見つけるにはメモリと時間がかかりすぎるため、テーブルを除外しました。
代わりに、 と の 2 つのマップを使用することを考えrows
ましcols
た。
見てみましょうrows
。キーは行インデックスであり、キーの値k
は、行にあるすべての要素の列番号のリストですk
。
例 (1 はそこに要素が存在することを意味します):
0 1 0
1 0 1
このrows
マップになります:
0: [1]
1: [0, 2]
cols
キーが列番号で、キーの値が columnk
にあるすべての要素の行番号のリストである同様のマップを保持しますk
。
k
テーブル
の行を削除したい場合は、次のようにします。del rows[k]
cols
ただし、これはマップから頂点を削除しません。一部の要素が削除されたすべての列を反復処理し、cols
マップから各要素を削除する必要があります。
O(1)
これを行う方法はありますか?