问题遇到的现象和发生背景
380题使用两个HashSet进行操作,但是最后一个测试样例通过不了,问题应该是随机数那里?
问题相关代码,请勿粘贴截图
class RandomizedSet {
Map map1;
Map map2;
int count=0;
public RandomizedSet() {
map1 = new HashMap();
map2 = new HashMap();
}
public boolean insert(int val) {
if(!map1.containsKey(val)){
map1.put(val,count);
map2.put(count,val);
count++;
return true;
}
else{
return false;
}
}
public boolean remove(int val) {
if(map1.containsKey(val) && count >=2){
Object key1 = map2.get(count-1);
Object key2 = map1.get(val);
map2.put(key2,map2.get(count-1));
map2.remove(count-1);
map1.remove(val);
map1.put(key1,key2);
count -- ;
return true;
}
else if(map1.containsKey(val) && count ==1){
map1.remove(val);
map2.remove(0);
count--;
return true;
}
else{
return false;
}
}
public int getRandom() {
return (int)map2.get(new Random().nextInt(count));
}
}
/**
* 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();
*/
运行结果及报错内容
random不同其他操作无问题
我的解答思路和尝试过的方法
尝试了使用不同的随机函数,Random().nextInt,Math.random,
我想要达到的结果
想通过最后一个测试样例,应该如何更改