题目链接:
题目描述:

题目解析:


核心思路
通过预处理两个辅助数组:
- 前缀和数组
f:f[i]表示下标i左侧所有元素的总和(不包含nums[i]本身)。- 后缀和数组
g:g[i]表示下标i右侧所有元素的总和(不包含nums[i]本身)。然后遍历数组,判断每个下标
i的f[i]是否等于g[i],若相等则i即为中心下标。
总结
- 时间复杂度 :
O(n),其中n是数组长度。预处理两个数组和遍历数组均为线性时间。 - 空间复杂度 :
O(n),用于存储前缀和数组f和后缀和数组g(可优化至O(1),通过先计算总 sum,再用单变量实时计算左侧和,右侧和 = 总 sum - 左侧和 - 当前元素)。 - 关键点:前缀和与后缀和的定义清晰区分了「不包含当前元素」,避免了重复计算。