solution1 : ArratList + HashMap
class RandomizedSet {
List<Integer> nums;
Map<Integer, Integer> index;
Random random;
public RandomizedSet() {
nums = new ArrayList<Integer>();
index = new HashMap<Integer, Integer>();
random = new Random();
}
public boolean insert(int val) {
if(index.containsKey(val)){
return false;
}
int i = nums.size();
nums.add(val);
index.put(val, i);
return true;
}
public boolean remove(int val) {
if(!index.containsKey(val)){
return false;
}
int i = index.get(val);
int last = nums.get(nums.size()-1);
nums.set(i, last);
index.put(last, i);
nums.remove(nums.size()-1);
index.remove(val);
return true;
}
public int getRandom() {
int randomInt = random.nextInt(nums.size());
return nums.get(randomInt);
}
}
/**
* Your RandomizedSet object will be instantiated and called as such:
* RandomizedSet obj = new RandomizedSet();
* boolean param_1 = obj.insert(val);
* boolean param_2 = obj.remove(val);
* int param_3 = obj.getRandom();
*/