Показать сообщение отдельно
  #1 (permalink)  
Старый 25.05.2021, 13:15
Интересующийся
Отправить личное сообщение для vurdalak21 Посмотреть профиль Найти все сообщения от vurdalak21
 
Регистрация: 22.05.2021
Сообщений: 10

Помогите с задачей
You are given an integer array nums. You can choose exactly one index (0-indexed) and remove the element. Notice that the index of the elements may change after the removal.

For example, if nums = [6,1,7,4,1]:

Choosing to remove index 1 results in nums = [6,7,4,1].
Choosing to remove index 2 results in nums = [6,1,4,1].
Choosing to remove index 4 results in nums = [6,1,7,4].
An array is fair if the sum of the odd-indexed values equals the sum of the even-indexed values.

Return the number of indices that you could choose such that after the removal, nums is fair.
Пример:
Ввод: nums = [2,1,6,4]
Выход: 1
Пояснение:
Убрать индекс 0: [1,6,4] -> Четная сумма: 1 + 4 = 5. Нечетная сумма: 6. Нечестно.
Убрать индекс 1: [2,6,4] -> Четная сумма: 2 + 4 = 6. Нечетная сумма: 6. Справедливая.
Убрать индекс 2: [2,1,4] -> Четная сумма: 2 + 4 = 6. Нечетная сумма: 1. Нечестно.
Убрать индекс 3: [2,1,6] -> Четная сумма: 2 + 6 = 8. Нечетная сумма: 1. Нечестно.
Есть 1 указатель, который можно удалить, чтобы количество было справедливым.

Решил сделать в функциональном стиле, вот что у меня получилось, но ответ не верный, помогите найти, что я сделал не правильно

const sumOdd = function(nums) {
    return nums.map((num, i) => i % 2 ? 0 : num).reduce((num1, num2) => num1 + num2, 0)
}

const removeIndex = function(nums, ind) {
    return nums.slice(0, ind).concat(nums.slice(ind + 1))
}

const waysToMakeFair = function(nums) {
    const indexes = [...Array(nums.length).keys()]
    return indexes.filter(ind => sumOdd(removeIndex(nums, ind)) % 2 == 0).length
};
Ответить с цитированием