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

181
Visualizações
¿Cuál es la complejidad temporal total de esta función recursiva con operaciones anidadas?

Tengo la siguiente función recursiva de arriba hacia abajo que calcula todas las diferentes formas en que podemos sumar números a partir de numbers de manera que sean iguales a targetSum . Ahora estoy tratando de determinar exactamente la complejidad temporal de este problema.

 const allWays = (targetSum, numbers) => { const fn = (remainder, startIndex) => { if (remainder === 0) return [[]]; const result = []; for (let i = startIndex; i < numbers.length; i += 1) { const num = numbers[i]; if (remainder - num < 0) continue; const remainderWays = fn(remainder - num, i); const targetWays = remainderWays.map((way) => [num, ...way]); result.push(...targetWays); } return result; }; return fn(targetSum, 0); };

Si hacemos que m sea el tamaño de targetSum y que n sea la longitud de los numbers , entonces el árbol de recurrencia debería tener una altura de m y un factor de ramificación de n , lo que le da una complejidad de tiempo de O(n^m) .

Si bien entiendo que este factor exponencial dominará todas las demás complejidades de tiempo, aún me gustaría saber qué agregan .map y dos operadores de propagación al tiempo de ejecución.

Parece que no puedo entender cuál es la complejidad temporal de este

 const targetWays = remainderWays.map((way) => [num, ...way]); result.push(...targetWays);

debiera ser.

¡Cualquier ayuda es apreciada! Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Tanto para #map como para #push, la complejidad del tiempo sería O(o) ya que #map iterará a través de la lista/matriz y push agregará un elemento individual al final de la lista al iterar sobre targetWays . Así que ambos serían operación O(o) . (Considerando o es la longitud del tamaño del resultado)

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