寻找数组的中心下标

解法(前缀和)
算法思路
从中心坐标的定义可知,除中心下标的元素外,该元素左边的【前缀和】等于该元素右边的【后缀和】。
- 因此,我们可以预处理出来两个数组,一个表示前缀和,另一个表示后缀和。
- 然后,我们可以用一个
for循环枚举可能的中心下标,判断每一个位置的【前缀和】以及【后缀和】。如果二者相等,就返回当前下标。
C++ 算法代码
class Solution {
public:
int pivotIndex(vector<int>& nums) {
int n = nums.size();
vector<int> f(n), g(n);
// f[0]=0, g[n-1]=0; // 可以不写,默认为 0
for (int i = 1; i < n; i++) f[i] = f[i - 1] + nums[i - 1];
for (int i = n - 2; i >= 0; i--) g[i] = g[i + 1] + nums[i + 1];
for (int j = 0; j < n; j++) {
if (f[j] == g[j]) return j;
}
return -1;
}
};
算法总结&&笔记展示





