力扣第1991题:寻找数组的中心索引 如何找到左右和相等的中心索引

题目解读
给定一个整数数组,我们需要找到一个中心索引,使得该索引左侧所有元素的和等于右侧所有元素的和。如果不存在这样的索引,则返回-1。中心索引的定义不包含在左右两侧的和计算中。这个问题考察对数组遍历和累加的基本操作,是理解数组平衡点的经典问题。
解题思路与过程
用暴力解法来寻找中心索引。外层循环遍历数组中的每个位置作为候选的中心索引i。对于每个候选位置i,内层循环分别计算i左侧所有元素的和(leftsum)和右侧所有元素的和(rightsum)。如果两者相等,则立即返回当前索引i。如果遍历完所有位置都没有找到满足条件的索引,则返回-1。
代码实现与注释
class Solution {
public:
int findMiddleIndex(vector<int>& nums) {
// 遍历数组中的每个位置作为候选中心索引
for(int i=0;i<nums.size();i++)
{
int leftsum=0; // 存储左侧元素和
int rightsum=0; // 存储右侧元素和
// 计算当前索引i左右两侧的和
for(int j=0;j<nums.size();j++)
{
if(j<i) // j在i左侧的情况
{
leftsum+=nums[j];
}
if(j>i) // j在i右侧的情况
{
rightsum+=nums[j];
}
}
// 检查是否找到中心索引
if(leftsum==rightsum)
{
return i; // 返回中心索引
}
}
return -1; // 未找到中心索引
}
};原创内容 转载请注明出处






