Ссылка на вызов HackerRank
Моя идея состоит в том, чтобы циклически проходить по массиву и суммировать все элементы в массиве каждый раз, кроме одного, а затем находить наименьшую сумму и наибольшую сумму,
Я знаю, что .splice()
может удалить любой элемент из массива.Но в настоящее время, с моим кодом, он удаляет только один элемент из массива один раз .Т.е. это дает мне только один кусок:
function miniMaxSum(arr) {
let smallestSum = 0;
let largestSum = 0;
for (let i = 0; i < arr.length; i++) {
let chunk = arr.splice(1);
console.log(chunk);
if (chunk > largestSum) largestSum = chunk;
if (chunk < smallestSum) smallestSum = chunk;
}
return (smallestSum, largestSum);
}
Мне нужно удалять один элемент из массива каждый раз во время цикла, затем получать максимальную и минимальную суммы из этого массива.
Таким образом, для данного массива [1, 2, 3, 4, 5]
я должен получить следующие возможные «куски»:
[2, 3, 4, 5]
, [1, 3, 4, 5]
, [1, 2, 4, 5]
, [1, 2, 3, 5]
, [1, 2, 3, 4]
.
Блок с наибольшей суммой равен [2, 3, 4, 5]
И фрагмент с наименьшей суммой равен [1, 2, 3, 4]
.
Как я могу настроить свой код, чтобы получить все возможные 4-значные массивы в данном массиве, чтобы я мог сравнивать их суммы, все еще используя цикл for?Или, если бы не цикл for, что бы вы предложили?
EDIT : теперь используйте Math.min()
и Math.max()
, чтобы получить самые маленькие и самые большие элементы в массиве.Затем с помощью .filter()
удалите эти элементы, чтобы создать новые массивы.Затем получим суммы этих массивов.
function miniMaxSum(arr) {
let smallest = Math.min(...arr);
let largest = Math.max(...arr);
let smallestArray = arr.filter(element => element !== largest);
let largestArray = arr.filter(element => element !== smallest);
let sumOfSmallestArray = 0;
let sumOfLargestArray = 0;
for (let i = 0; i < smallestArray.length; i++) {
sumOfSmallestArray += smallestArray[i];
}
for (let i = 0; i < largestArray.length; i++) {
sumOfLargestArray += largestArray[i];
}
return ([sumOfSmallestArray, sumOfLargestArray]).toString();
}
Но даже если он работает в моей консоли, он не работает в HackerRank.