將數組分成和相等的三個部分【leetcode每日一題】

在這裏插入圖片描述
思路:
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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章