https://leetcode.com/problems/find-pivot-index | Easy |
---|
Дан массив целых чисел nums
. Индекс поворота — это позиция, где сумма всех чисел слева равна сумме всех чисел справа. Верните индекс поворота. Если такого индекса нет, верните -1.
Input:
[1, 7, 3, 6, 5, 6]Output:
3Explanation:
Сумма слева от индекса 3 равна 11, и сумма справа также равна 11.
Input:
[1, 2, 3]Output:
-1Explanation:
Нет индекса, где суммы слева и справа равны.
Input:
[2, 1, -1]Output:
0Explanation:
Сумма слева от индекса 0 равна 0, и сумма справа также равна 0.
fun pivotIndex(nums: IntArray): Int {
var totalSum = nums.sum() // Суммируем все элементы массива
var leftSum = 0 // Инициализируем сумму слева от текущего индекса
for (i in nums.indices) {
// Если сумма слева равна разнице между общей суммой и текущим элементом и левой суммой
if (leftSum == totalSum - leftSum - nums[i]) {
return i // Возвращаем текущий индекс как индекс поворота
}
leftSum += nums[i] // Добавляем текущий элемент к левой сумме
}
return -1 // Возвращаем -1, если индекс поворота не найден
}
O(n), где n — длина массива.
O(1), так как используется только несколько дополнительных переменных.