Задача
Дан массив nums. Найдите индекс, где сумма элементов слева равна сумме справа (pivot index), или -1.
Примеры
Пример 1
Input: nums = [1,7,3,6,5,6]
Output: 3
Пояснение
Опорный индекс — 3. Сумма слева = 1+7+3 = 11, сумма справа = 5+6 = 11.
Пример 2
Input: nums = [1,2,3]
Output: -1
Пояснение
Нет индекса, удовлетворяющего условию.
Пример 3
Input: nums = [2,1,-1]
Output: 0
Пояснение
Опорный индекс — 0. Слева элементов нет (сумма 0), справа = 1 + (-1) = 0.
Решение
Решение
// Time: O(n) — два прохода (reduce + for) // Space: O(1) — только две переменные var pivotIndex = function(nums) { const totalSum = nums.reduce((a, b) => a + b, 0); let leftSum = 0; for (let i = 0; i < nums.length; i++) { // rightSum = totalSum - leftSum - nums[i] if (leftSum === totalSum - leftSum - nums[i]) { return i; } leftSum += nums[i]; } return -1; };