文章目录
- 题目
- 分析
把元素储存在一个数组里
添加和生成随机数都很好操作
删除的核心是把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()
*/