Показать сообщение отдельно
  #3 (permalink)  
Старый 25.05.2021, 14:31
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

кстати, можно переиспользовать переданный массив, чтобы не понадобился вспомогательный

function waysToMakeFair(arr) {
  if (!arr || !arr.length) {
    return 0;
  }
  let fullDelta = 0;
  for (let i = 0; i < arr.length; ++i) {
    fullDelta += i % 2 ? -arr[i] : arr[i];
    arr[i] = fullDelta;
  }
  let count = 0;
  for (let i = 0; i < arr.length; ++i) {
    const prevDelta = i > 0 ? arr[i - 1] : 0
    const nextDelta = fullDelta - arr[i]
    if (prevDelta - nextDelta === 0) {
      count++
    }
  }
  // восстанавливаем стартовые значения
  for (let i = arr.length - 1; i > 0; --i) {
    arr[i] = i % 2 ? -arr[i] + arr[i-1] : arr[i] - arr[i-1];
  }
  return count
}
Ответить с цитированием