20210128每日一题
题面:找到数组中的一个位置,左边和等于右边和。
思路:想法比较简单暴力,从左累加一遍,从右累加一遍,顺便判断哪个位置右边的累加和等于左边的就好了(不要忘记考虑n-1作为答案的效果)。然后处理一下特殊情况,比如n=0。
代码:
class Solution {
public:
int pivotIndex(vector<int>& nums) {
int sumleft[10000+10],sumright[10000+10];
int n = nums.size();
if(!n) return -1;
sumleft[0]=0;
sumright[n-1]=0;
int ans=-1;
for(int i=1;i<n;++i) sumleft[i]=sumleft[i-1]+nums[i-1];
if(sumleft[n-1]==0) ans=n-1;
for(int i=n-2;i>=0;--i){
sumright[i]=sumright[i+1]+nums[i+1];
if(sumright[i]==sumleft[i]) ans=i;
}
return ans;
}
};
每日一记:今天早起打卡成功!还有一堆事情今天,晚上和唐老师她们一起吃饭,见许久不见的朋友,快乐。