开始刷题了,用 c++玩玩,丰富下语言的使用经验。
class Solution {
public:
int findMiddleIndex(vector<int>& nums) {
int total = accumulate(nums.begin(), nums.end(), 0);
int sum = 0;
for (int i = 0; i < nums.size(); ++i) {
if (2 * sum + nums[i] == total) {
return i;
}
sum += nums[i];
}
return -1;
}
};
使用的是前缀和的方法,维护一个 sum 变量,如果 sum 变量,相当于中间下标,左/右边全部的和,如果 sum * 2 + 中间那个数等于总量的话,那就说明找到了中间下标