Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

109
Vistas
Implementando la clase de conjuntos aleatorios con la operación O(1)

Esto está relacionado con leetcode - question here , que pregunta:

Implemente la clase RandomizedSet:

  • RandomizedSet() Inicializa el objeto RandomizedSet.
  • bool insert(int val) Inserta un elemento val en el conjunto si no está presente. Devuelve verdadero si el elemento no estaba presente, falso en caso contrario.
  • bool remove(int val) Elimina un elemento val del conjunto si está presente. Devuelve verdadero si el elemento estaba presente, falso en caso contrario.
  • int getRandom() Devuelve un elemento aleatorio del conjunto actual de elementos (se garantiza que al menos un elemento existe cuando se llama a este método). Cada elemento debe tener la misma probabilidad de ser devuelto.

Debe implementar las funciones de la clase de manera que cada función funcione con una complejidad de tiempo promedio de O(1).

Puedo pasar algunos de los casos de prueba pero falla uno de los casos de prueba (donde en algunos lugares, mi programa devuelve undefined ). ¿Qué es lo que estoy haciendo mal aquí? No puedo encontrar mi error.

 var RandomizedSet = function() { this.map = new Map(); this.vector = []; }; /** * @param {number} val * @return {boolean} */ RandomizedSet.prototype.insert = function(val) { if(this.map.has(val)) return false; else { let position = 0; if(this.vector.length > 0) position = this.vector.length-1; this.map.set(val, position); this.vector.push(val); return true; } }; /** * @param {number} val * @return {boolean} */ RandomizedSet.prototype.remove = function(val) { if(this.map.has(val)) { const index = this.map.get(val); const lastVal = this.vector[this.vector.length-1]; this.vector[index] = lastVal; this.vector.pop(); this.map.delete(val); return true; }else { return false; } }; /** * @return {number} */ RandomizedSet.prototype.getRandom = function() { const randIndex = Math.floor(Math.random() * this.vector.length); return this.vector[randIndex]; }; /** * 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() */
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Al mover el último elemento al lugar del elemento eliminado, olvidó actualizar el índice del elemento movido en el mapa:

 RandomizedSet.prototype.remove = function(val) { if(this.map.has(val)) { const index = this.map.get(val); const lastVal = this.vector[this.vector.length-1]; this.vector[index] = lastVal; this.vector.pop(); this.map.set(lastVal, index); // ADDED this.map.delete(val); return true; }else { return false; } };

Tenga en cuenta el index == this.vector.length-1 ; el orden de operaciones que se muestra arriba manejará este caso correctamente sin código adicional.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda