思路
-
遍历数组,求出数组和total
-
再次遍历,边遍历边求和,假设索引为i时的和为sum,那么左侧和为sum-nums[i],右侧和为total-sum,如果相等,就返回i
时空复杂度
- 时间复杂度:遍历了两遍 O(n)
- 空间复杂度:O(1)
public int pivotIndex(int[] nums) { int total = 0, sum = 0; for (int num : nums) { total += num; } for (int i = 0; i < nums.length; i++) { sum += nums[i]; if (sum - nums[i] == total - sum) return i; } return -1; }
Go版本
func pivotIndex(nums []int) int {
total, sum := 0, 0
for i := 0; i < len(nums); i++ {
total += nums[i]
}
for i := 0; i < len(nums); i++ {
if total-nums[i] == (sum << 1) {
return i
}
sum += nums[i]
}
return -1
}