我有一個非常稀疏填充表與巨大的尺寸。如何在常量時間從稀疏表中刪除行/列?
即,我的表的索引可能非常大,但表中元素的數量非常少。
我一直在想這個數據結構。
我排除了rows x cols
表,因爲它佔用太多的內存和太多時間來查找行/列中的所有元素。
相反,我想使用兩個地圖:rows
和cols
。我們來看看rows
。鍵是行索引,鍵k
的值是行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)
這樣做的方法?
行上的信息不夠用,爲什麼你需要列的地圖? – Joni
@Joni,快速訪問。我需要快速瞭解特定列中有多少元素。 – batman
而不是優化行刪除我認爲你需要看看你將在整個生命週期中對錶執行的所有讀寫操作,並對這些操作進行優化。 – NovaDenizen