给你一个下标从 0 开始的整数数组 nums ,请你找到 最左边 的中间位置 middleIndex (也就是所有可能中间位置下标最小的一个)。
中间位置 middleIndex 是满足 nums[0] + nums[1] + ... + nums[middleIndex-1] == nums[middleIndex+1] + nums[middleIndex+2] + ... + nums[nums.length-1] 的数组下标。
如果 middleIndex == 0 ,左边部分的和定义为 0 。类似的,如果 middleIndex == nums.length - 1 ,右边部分的和定义为 0 。
请你返回满足上述条件
最左边 的 middleIndex ,如果不存在这样的中间位置,请你返回 -1 。
class Solution {
public:
int findMiddleIndex(vector<int>& nums) {
int sum = accumulate ( nums.begin ( ), nums.end ( ), 0 );
int cur = 0;
for ( int i = 0; i < nums.size ( ); ++ i ) {
if ( cur * 2 + nums[i] == sum )
return i;
cur += nums[i];
}
return -1;
}
};
解释:
这是一个 C++ 类,名为 Solution,其中包含一个名为 findMiddleIndex 的公共方法。这个方法接受一个整数类型的 vector 参数 nums,并返回数组中间元素的索引。
该方法首先计算 nums 中所有元素的总和 sum。然后使用一个变量 cur 来追踪当前中间元素的索引。接下来,它遍历 nums 中的每个元素,如果 cur 加上当前元素的值等于 sum,那么就找到了中间元素的索引。如果不是,则将 cur 加上当前元素的值,继续遍历下一个元素。如果遍历完整个 nums 数组后仍然没有找到中间元素,则返回 -1。
总之,这个方法的目的是找到 nums 数组中间元素的索引,如果找不到则返回 -1。