好難喔哈哈, 明明就知道要在線性時間內完成, 就是不知道要怎麼組織
這邊我們先全部加總的到total
然後遍歷陣列, 若前i個的總和兩倍剛好是 total- nums[i]
代表另一邊一定也是, index就是i
注意首位數的處理, 如果扣除首位數total- nums[0] 是0, 代表另一邊的全部加起來剛好是0, 即可回傳0
class Solution {
public:
int pivotIndex(vector<int>& nums) {
int total = 0;
for(int i = 0; i < nums.size();i++){
total += nums[i];
}
int sum = 0;
if(total -nums[0] == 0) return 0;
for(int i = 1; i < nums.size(); i++){
sum += nums[i-1];
if(2 * sum == total - nums[i]){
return i;
}
}
return -1;
}
};