Escriba una solución para la matriz de entrada cuyos elementos de la matriz se clasifican en tres grupos. La suma de los elementos de cada grupo debería ser aproximadamente igual.
Ejemplo 1: [7,5,3,1,2,3] Resultado: [7] // 7, [5,2] //7, [3,3,1] // 7
Logré hacerlo cuando hay una suma que se puede dividir en tres partes iguales. Mi pregunta es cómo actualizar el código para que funcione en los casos en que la suma no es igual o cuando algún elemento de la matriz es mayor que la suma dividida. Aquí está mi código hasta ahora:
var input=document.getElementById('niz').value; var arr=[]; for (var i = 0; i < input.length; i++) { if(input[i]!=" " && !isNaN(input[i])){ arr.push(input[i]); } } console.log(arr); var n=arr.length; var status=true; if(n<3){ status=false; } else{ var sum = 0; var auxiliary = 0; var i=0; var j=0; //calculate sum of elements for(i=0;i<n;i++){ sum+=arr[i]; } var point = Array(2).fill(0); if (sum % 3 == 0) { // Find that three equal subarray exists in given array for (i = 0; i < n && j < 2; ++i) { // Add current element into auxiliary variable auxiliary += arr[i]; if (auxiliary == parseInt(sum / 3)) { point[j] = i + 1; // Set zero sum auxiliary = 0; j++; } } if (j == 2) { // When equal three subarray exist j = 0; // Print the elements of subarray for (i = 0; i < n; ++i) { if (j < 2 && point[j] == i) { j++; } console.log(arr[i]); } } else { status=false; } } else { status=false; } }if(status!=true){ console.log("\n is is not possible") } }