bupt_zq 2022-05-27 21:56 采纳率: 100%
浏览 7
已结题

leetcode 380O(1) 时间插入、删除和获取随机元素,最后一个测试样例通过不了

问题遇到的现象和发生背景

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,

我想要达到的结果

想通过最后一个测试样例,应该如何更改

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 6月4日
    • 创建了问题 5月27日

    悬赏问题

    • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
    • ¥15 微信会员卡接入微信支付商户号收款
    • ¥15 如何获取烟草零售终端数据
    • ¥15 数学建模招标中位数问题
    • ¥15 phython路径名过长报错 不知道什么问题
    • ¥15 深度学习中模型转换该怎么实现
    • ¥15 Stata外部命令安装问题求帮助!
    • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
    • ¥15 如何用python向钉钉机器人发送可以放大的图片?
    • ¥15 matlab(相关搜索:紧聚焦)