Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

111
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda