0
点赞
收藏
分享

微信扫一扫

力扣每日一题(一)——4.13

北冥有一鲲 2022-04-14 阅读 68
javascript

文章目录

- 题目

在这里插入图片描述

- 分析

把元素储存在一个数组里
添加和生成随机数都很好操作
删除的核心是把val和数组里面最后一个元素调换位置 , 然后用数组的pop()方法 删除
或者 可以获取到val的indexOf , 然后用splice(index,1) 删除指定位置的元素

- 我的答案

class RandomizedSet {
    constructor() {
        this.map = new Map()
        this.arr = new Array()
    }

/** 
 * @param {number} val
 * @return {boolean}
 */
insert(val) {
    if(!this.map.has(val)) {
        this.arr.push(val)
        let index = this.arr.length-1
        this.map.set(val,index)
        return true
    }
    return false
}

/** 
 * @param {number} val
 * @return {boolean}
 */
remove(val) {
    if(this.map.has(val)) {
        let id = this.map.get(val)       
        this.arr[id] = this.arr[this.arr.length - 1]
        this.map.set(this.arr[id], id)
        this.arr.pop()
        this.map.delete(val)
        return true
    }
    return false
}

/**
 * @return {number}
 */
getRandom() {
    let n = Math.floor(Math.random() * this.arr.length)
    return this.arr[n]
}
}
/**
 * Your RandomizedSet object will be instantiated and called as such:
 * var obj = new RandomizedSet()
 * var param_1 = obj.insert(val)
 * var param_2 = obj.remove(val)
 * var param_3 = obj.getRandom()
 */
举报

相关推荐

0 条评论