巨大なディメンションを持つ非常にまばらに満たされたテーブルがあります。
つまり、テーブルのインデックスは非常に大きくなる可能性がありますが、テーブル内の要素の数は非常に少なくなります。
そのためのデータ構造を考えています。
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)これを行う方法はありますか?