思路:
1.首先數組裏面的數小於三個,直接返回false;
2.對數組裏面的數求和,和不是3的整數倍,直接返回false;
3.從左往右遍歷,如果s爲和的1/3,就讓cnt++,s=0;
在第三步考慮到如果你求出來三個區間滿足但是最後還有剩餘怎麼辦?
沒關係,我們接着加,最後只要判斷cnt==3並且剩餘的幾個數的和s等於0就可以了。
這個思路非常直接,也不用考慮什麼細節,適合新手學習,如果有問題在下方留言,歡迎交流!
class Solution {
public:
bool canThreePartsEqualSum(vector<int>& A) {
if(A.size()<3) return false;
int sum=accumulate(A.begin(),A.end(),0);
if(sum%3) return false;
int cnt=0,s=0;
for(int i=0;i<A.size();i++)
{
s+=A[i];
if(s==sum/3&&cnt<3) {cnt++;s=0;}
}
if(cnt==3&&!s) return true;
return false;
}
};