1
var RandomizedSet = function () {6
RandomizedSet.prototype.hash = function (val) {10
RandomizedSet.prototype.insert = function (val) {11
const hash = this.hash(val);12
let basket = this._data[hash];14
for (let i = 0; i < basket?.length; i++) {15
if (basket[i][0] === val) {21
this._data[hash] = [[val, this._flatData.length]];23
this._data[hash].push([val, this._flatData.length]);25
this._flatData.push(val);29
RandomizedSet.prototype.remove = function (val) {30
const hash = this.hash(val);31
let basket = this._data[hash];35
for (let i = 0; i < basket.length; i++) {36
const currBasket = basket[i];37
if (currBasket[0] === val) {38
const idxInFlat = currBasket[1];39
const reassignedValueInFlat = del(this._flatData, idxInFlat);40
// Write new address in _data if needed41
if (reassignedValueInFlat) {42
this._data[this.hash(reassignedValueInFlat)].forEach((item) => {43
if (item[0] === reassignedValueInFlat) {45
return; // from forEach57
RandomizedSet.prototype.getRandom = function () {58
return this._flatData[getRandomInt(0, this._flatData.length - 1)];61
function getRandomInt(min, max) {63
max = Math.floor(max);64
return Math.floor(Math.random() * (max - min + 1)) + min;67
function del(arr, idx) {71
if (idx === arr.length - 1) {