Как решить данную задачу?
Функция getLeaders принимает массив чисел, и возвращает массив лидеров
Пояснение: Число считается лидером, если оно больше суммы всех элементов справа от него.
Примечания:
Входной массив содержит не менее 3 элементов Массив входных чисел может содержать как положительные, так и отрицательные числа Числа могут повторяться Массив который возвращается, должен содержать числа в том же порядке, в котором они встречаются в начальном массиве Отсутствие элементов справа от числа расценивается как 0
Примеры:
getLeaders([1, 2, 3, 4, 0]) // Возвращает: [4]
getLeaders([16, 17, 4, 3, 5, 2]) // Возвращает: [17, 5, 2]
Мой код:
function getLeaders(numbers) {
const leader = [];
for (let i = 0; i < numbers.length; i++) {
let sumValuesRight = 0;
for (let v = numbers[i + 1]; v < numbers.length; v++) {
sumValuesRight += numbers[v];
}
if (numbers[i] > sumValuesRight) {
leader.push(numbers[i]);
};
};
return leader;
}
console.log(getLeaders([1, 2, 3, 4, 0]));
console.log(getLeaders([16, 17, 4, 3, 5, 2]));
console.log(getLeaders([-1,-29,-26,-2]));
Ответы (1 шт):
Автор решения: EzioMercer
→ Ссылка
Вам не нужен цикл в цикле, можете просто пройтись по массиву в обратном порядке проверять и складывать по очереди:
const getLeaders = (nums) => {
let sum = 0;
const leads = [];
for(let i = nums.length - 1; i >= 0; --i) {
const num = nums[i];
if (num > sum) leads.push(num);
sum += num;
}
return leads.reverse();
}
console.log(getLeaders([1, 2, 3, 4, 0]));
console.log(getLeaders([16, 17, 4, 3, 5, 2]));