Написано: 17.03.2023

724. Поиск индекса поворота (Find Pivot Index)

easy

Задание.

Получен массив целых чисел nums

Вычислите индекс поворота этого массива.

Индекс поворота – это индекс, в котором сумма всех чисел слева от индекса точно равна сумме всех чисел справа от индекса.

Если индекс находится на левом краю массива, то левая сумма равна 0, потому что слева нет элементов. Это также относится к правому краю массива.

Верните крайний левый индекс поворота. Если такого индекса не существует, верните значение -1.

Пример 1.

Входные данные: nums = [1,7,3,6,5,6]

Результат: 3

Пояснение:

Индекс поворота равен 3.
Cумма слева = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11
Сумма справа = nums[4] + nums[5] = 5 + 6 = 11

Пример 2.

Входные данные: nums = [1,2,3]

Результат: -1

Пояснение: Нет индекса, который удовлетворял бы условиям в постановке задачи.

Пример 3.

Входные данные: nums = [2,1,-1]

Результат: 0

Пояснение:

Индекс поворота равен 0.
Cумма слева = 0 (нет элементов слева от индекса 0)
Сумма справа = nums[1] + nums[2] = 1 + -1 = 0

Решение.

class Solution {
public:
    int pivotIndex(vector<int>& nums) {
        int sum = 0, sum2 = 0, len = nums.size();
        for(int i = 0; i < len; i++) {
            sum += nums[i];
        }
        for(int i = 0; i < len; i++) {
            if(sum - nums[i] == 2*sum2) {
                return i;
            }
            sum2 += nums[i];
        }
        return -1;
    }
};

Способ решения.