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

128
Vistas
Obtenga el subarreglo máximo con el arreglo

Quiero hacer una variación de obtener el subarreglo máximo de leetcode en el que también recopile todo el subarreglo máximo, pero parece que no puedo entender lo que me estoy perdiendo.

 var maxSubArray = function(nums) { let currSum = 0; let maxSum = -Infinity; let currArray = []; let maxArray = []; for (let i = 0; i < nums.length; i++) { currSum += nums[i]; if (Math.max(currSum, maxSum) != maxSum) { maxArray = currArray; maxSum = currSum; currArray.push(nums[i]); } maxSum = Math.max(currSum, maxSum); if (currSum < 0) { currSum = 0; currArray = [] } } console.log(maxArray); return maxSum; };

Reconozco por qué esto es incorrecto, ya que el valor currSum no puede tener un componente negativo porque siempre sería una suma menor que la maxSum actual. Pero no estoy seguro de qué condición requeriría para esto. Siento que me estoy perdiendo algo obvio pero no puedo pensar en ello :(

 Input: nums = [-2,1,-3,4,-1,2,1,-5,4] Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6.
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo estaba haciendo de manera incorrecta ya que estaba almacenando una matriz cuando podría haber almacenado el índice.

 var maxSubArray = function(nums) { let currSum = 0; let maxSum = -Infinity; let prevMax = -Infinity; let start = 0; let end = 0; for (let i = 0; i < nums.length; i++) { currSum += nums[i]; if (nums[i] > maxSum) { start = i; } if (Math.max(currSum, maxSum) != maxSum) { maxSum = currSum; end = i; } if (currSum < 0) { currSum = 0; if (nums[i+1] != undefined) { start = i+1; } } } console.log(start, end); console.log(nums.slice(start, end+1)) return maxSum; };
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