Solución

@josemcarrizosa98_f7e20d3d·9/4/2026TypeScript
solution.tsTypeScript
function maxProduct(nums: number[]): number {
  if(nums.length == 2) return nums[0] * nums[1];
  
  const sortedNums = nums.sort()

  // Existen al menos dos numeros negativos
  if(sortedNums[1] < 0){
    const negativeNumProduct = sortedNums[0] * sortedNums[1];
    const positiveNumsProduct = sortedNums[nums.length - 1] * sortedNums[nums.length - 2];

    if(negativeNumProduct > positiveNumsProduct){
      return negativeNumProduct
    }else{
      return positiveNumsProduct
    }
  }

  // solo existe un numero negativo o todos son positivos
  return  sortedNums[nums.length - 1] * sortedNums[nums.length - 2];
  

}

// No modificar: necesario para evaluar el resultado.
export { maxProduct };
1respuestas
Respuestas
@alexiis-dev5/6/2026

Buena idea comparar el producto de los dos menores con el de los dos mayores, porque matemáticamente esa es la forma correcta de resolver el problema cuando se usa ordenación. Sin embargo, veo un problema importante: estás utilizando nums.sort() sin función comparadora. En JavaScript eso ordena como cadenas de texto y no como números, por lo que casos como [100, 2, 30] pueden quedar mal ordenados y producir resultados incorrectos. Deberías usar nums.sort((a, b) => a - b).

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.