题目:
Design a data structure that supports all following operations in average O(1) time.
insert(val)
: Inserts an item val to the set if not already present.remove(val)
: Removes an item val from the set if present.getRandom
: Returns a random element from current set of elements. Each element must have the same probability of being returned.
public class RandomizedSet {
/** Initialize your data structure here. */
ArrayList<Integer> array=null;
public RandomizedSet() {
if(array==null){
array=new ArrayList<Integer>();
}
}
/** Inserts a value to the set. Returns true if the set did not already contain the specified element. */
public boolean insert(int val) {
if(array.contains(val)){
return false;
}else{
array.add(val);
return true;
}
}
/** Removes a value from the set. Returns true if the set contained the specified element. */
public boolean remove(int val) {
for(int i=0;i<array.size();i++){
if(array.get(i)==val){
array.remove(i);
return true;
}
}
return false;
}
/** Get a random element from the set. */
public int getRandom() {
if(array==null||array.size()==0){
return -1;
}
int t= (int)(Math.random()*10%array.size());
return array.get(t);
}
}