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

394
Vistas
Runner Up Score - Solución en Javascript

Actualmente todavía estoy aprendiendo el JS básico y me pregunto cómo responder a este tipo de pregunta de matriz.

Pregunta :

Dada la hoja de puntaje del participante para su Día del Deporte Universitario, debe encontrar el puntaje del subcampeón. Se le dan puntuaciones N Guárdalos en una lista y encuentra la puntuación del subcampeón.

Formato de entrada :

La primera línea contiene N . La segunda línea contiene una matriz A[] de N enteros, cada uno separado por un espacio.

 Sample Input: [5,2,3,6,6,5]

Formato de salida :

Imprime la puntuación del subcampeón.

 Sample Output: 5

Este es mi código :

 function uniqueScore (value, index, self) { return self.indexOf(value) === index } var score = [5,2,3,6,6,5] var filter = score.filter(uniqueScore) var descSort = filter.sort().reverse() function runnerUpScore(x) { var runnerUp = descSort return runnerUp } console.log(runnerUpScore(x))

La condición es que estoy atascado cuando ya estoy ordenando la matriz y eliminando duplicados. Por lo tanto, necesito alguna orientación sobre cómo llamar a la matriz ordenada y solo mostrar el índice 1 de la lista de matrices para mostrar el puntaje final.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

El problema con su enfoque es que está ordenando la matriz y luego invirtiéndola, lo que cuesta mucho cálculo. Aquí hay una solución simple en O(n). Itera la matriz solo una vez y encuentra el segundo puntaje más alto, que es el segundo puntaje.

 var scores = [1,2,3,4,5]; const runnerUpScore = (scores) => { scores = [... new Set(scores)] // get unique elements var largest = -1; var secondLargest = -1; scores.forEach((score) => { if(score >= largest) { secondLargest = largest; largest = score; } else if (score > secondLargest) { secondLargest = score; } }); return secondLargest; } console.log(runnerUpScore(scores));

about 4 years ago · Juan Pablo Isaza Denunciar

0

  1. .sort() inversa:
     let scores = [5, 2, 3, 6, 6, 5]; let reverseOrder = scores.sort((a, b) => b - a); // [6, 6, 5, 5, 3, 2]
  2. Filtre los duplicados convirtiendo la matriz en un Set() y luego de vuelta a una matriz:
     let set = new Set(reverseOrder) // {6:6, 5:5, 3:3, 2:2} this is a representation there's much more to a Set. let unique = [...set] // [6, 5, 3, 2]
  3. Obtenga la puntuación en la segunda posición del índice:
     unique[1] // 5 

 const scores = [5, 2, 3, 6, 6, 5]; const reverseOrderUnique = [...new Set(scores.sort((a, b) => b - a))]; console.log(reverseOrderUnique); console.log('Runner Up: '+reverseOrderUnique[1]);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente puede lograrlo ordenando la matriz en orden descendente usando Array.sort() y filtrando los duplicados usando el método Set() y luego accediendo a la puntuación finalista desde el 1st índice de la matriz.

Demostración en vivo :

 // Input array const scores = [5,2,3,6,6,5]; // Sort the array in descending order and remove the duplicates by using Set() method. const sortedScores = [...new Set(scores.sort((a,b) => ba))]; // Runner Up score by accesing the 1st index value. console.log(sortedScores[1]);

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