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

333
Visualizações
¿El problema Javascript Mini-Max Sum HackerRank devuelve una suma incorrecta?

Me he estado tirando de los pelos tratando de averiguar qué estoy haciendo mal. En el problema de HackerRank, Mini-Max Sum, la cuestión es encontrar la suma de una parte de una matriz de 5 números. En el ejemplo que te dan te muestran arr = [1,2,3,4,5] la suma minima seria 1+2+3+4 = 10 y la suma maxima seria 2+3+4+5 = 14

Todavía soy nuevo, por lo que resolver el problema a veces sigue siendo un desafío para mí. Se me ocurrió esto para mi primera solución:

 function minMax(arr){ console.log(arr, 'this is our arr') var baseSum = 0 var minSum = 0 var maxSum = 0 var i = null for(i=1;i<4;i++){ baseSum += arr[i] } console.log(baseSum, 'this is baseSum') console.log(minSum = baseSum + arr[0], maxSum = baseSum + arr[4]) } const numArr = [7, 69, 2, 221, 8974] minMax(numArr)

Mi pensamiento es que podría tomar los números que son consistentes entre las dos variables, tomar el primer y último número de la matriz y sumarlos para obtener el resultado. Pasó una prueba pero falla en los valores enumerados en numArr . Si sumo esos últimos 4 números, obtengo 9266 pero el valor esperado es 9271 .

Pasé un tiempo tratando de pensar en una forma de refactorizarlo, sabía que no era genial para empezar, ¡pero lo estoy intentando!

se me ocurrió esto -

 function minMax(arr){ if (arr.length > 5){ return "Too long" } var minArr = arr.slice(0,4) var maxArr = arr.slice(1,5) minSum = 0 maxSum = 0 for (i=0; i < minArr.length;i++){ minSum += minArr[i] } for (x=0; x < maxArr.length; x++){ maxSum += maxArr[x] } console.log(minSum, maxSum) }

Pero devolvió exactamente lo mismo que antes. Entonces, no entiendo la pregunta (probablemente lo que está sucediendo) o la suma es incorrecta en su valor esperado. Incluso tomé una calculadora y obtuve 9266, así que no entiendo lo que estoy haciendo mal.

¿Alguien se ha topado con esto y tiene alguna idea de lo que está pasando?

ACTUALIZAR

No me sorprende, leí mal la pregunta. Se supone que debes ordenar la matriz real antes de obtener la suma. En realidad, no lo indican en la pregunta, por lo que está mal redactado, en mi opinión, lol, pero en última instancia, esto es todo lo que hice para obtener el valor correcto en caso de que alguien se lo pregunte.

 if (arr.length > 5){ return "Too long" } arr.sort(function(a, b) { return a - b; }); var minArr = arr.slice(0,4) var maxArr = arr.slice(1,5) var minSum = 0 var maxSum = 0 var i = null for (i=0;i<minArr.length;i++){ minSum += minArr[i] } for (i=0;i<maxArr.length;i++){ maxSum += maxArr[i] } console.log(minSum, maxSum) } const numArr = [7, 69, 2, 221, 8974] minMax(numArr)

¡Esto obviamente suma diferentes valores para que obtengas la respuesta correcta!

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

0

En la pregunta, no se especifica si la matriz de entrada se ordenará o no, por lo que lo único que falta es ordenar la matriz en orden descendente.

1) Primero puede sort la matriz en orden ascending

 const clone = [...arr].sort((a, b) => a - b);

2) la first four sum .

 const minSum = arr.slice(0, 4).reduce(sum, 0);

3) también tome las last four sum

 const maxSum = arr.slice(1).reduce(sum, 0); 

 function minMax(arr) { const clone = [...arr].sort((a, b) => a - b); const sum = (acc, curr) => acc + curr; const minSum = clone.slice(0, 4).reduce(sum, 0); const maxSum = clone.slice(1).reduce(sum, 0); console.log(minSum, maxSum); } const numArr = [7, 69, 2, 221, 8974]; minMax(numArr);

about 4 years ago · Juan Pablo Isaza Relatório

0

Seguir teniendo algo semi-orientado a MinMax. Sugeriría ordenar como un paso separado. Luego, puede tener dos punteros en la matriz que se mueven simultáneamente a través de la matriz para contar el mínimo y el máximo:

 function rank(arr, low, high) { if (arr.length > 5) { console.log("Too long"); return; } // we reached the fourth value, so we stop if (high == 1) return [arr[low], arr[high]]; // continue calculating at further depth let minMaxRecur = rank(arr, low + 1, high - 1); return [arr[low] + minMaxRecur[0], arr[high] + minMaxRecur[1]]; } let initialArray = [7, 69, 2, 221, 8974]; initialArray.sort((a, b) => a - b); // sort first console.log(rank(initialArray, 0, 4));

Esto utiliza un algoritmo recursivo para contar a través de la matriz, pero esto, por supuesto, podría ser mucho más simple con un solo ciclo que recorre la matriz como:

 function rankLoop(arr) { let min = 0, max = 0; for (let i = 0; i < 4; i++) { min += arr[i]; max += arr[4 - i]; } return [min, max]; } console.log(rankLoop([2, 7, 69, 221, 8974], 0, 4));

Esto nuevamente asume que la matriz que viene en él está ordenada, lo que se puede ver en mi primer fragmento de código. Cualquiera de estos trabajos con la misma complejidad de tiempo.

about 4 years ago · Juan Pablo Isaza Relatório

0

en pitón:

 def miniMaxSum(arr): arr.sort() hold = [None]*int(len(arr)-3) for i in range(0,len(arr)-3): temp = 0 for j in range(i,i+4): temp = temp + arr[j] hold[i] = temp print(hold[0],hold[-1])
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