力扣第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; // 未找到中心索引 } };
原创内容 转载请注明出处