GFG上的一道數據結構的題:
http://geeksquiz.com/data-structure-n-elements-o1-operations/
設計一個數據結構插入刪除和查找都是O(1),存儲 0 - n-1
最初想法是hashtable類似,基於鏈表,但是查找不可能爲O(1), 看了gfg上的講解才豁然開朗。
Solution:
就是用一個數組實現,因爲要存的數已知,0 到n-1,
數字 i 存在就把A[i] 設爲true,mark
不存在就設爲false
實現非常簡單了
boolean A[];
public void initialize(int n){
A = new boolean[n];
Arrays.fill(A, false);
//or no need to initialize in java
}
//Insert an element
public void insert(int i){
A[i] = true;
}
//Delete an element
public void delete(int i){
A[i] = false;
}
public int deletelement(int i){
if(A[i] == true){
A[i] = false;
return 0;
}else{
return -1; // failure
}
}
//Find an element
public boolean find(int i){
return A[i];
}