【数组】1013. 将数组分成和相等的三个部分

题目:

 

 

解答:

(1)首先计算数组 A 中所有数字总和 sum;

(2)遍历数组 A 查找和为 sum / 3的子数组个数;

(3)如果找到了三个这样的子数组则返回 true

(4)找不到三个就返回 false;

 1 class Solution {
 2 public:
 3     bool canThreePartsEqualSum(vector<int>& A) 
 4     {
 5         int sum = accumulate(A.begin(), A.end(), 0);
 6 
 7         if (sum % 3 != 0) 
 8         {
 9             return false;
10         }
11         int count = 0;
12         int subSum = 0;
13         
14         for (int i = 0; i < A.size(); i ++) 
15         {
16             subSum += A[i];
17             if (subSum == sum / 3) 
18             {
19                 count ++;
20                 subSum = 0;
21             }
22             if (count == 3) 
23             {
24                 return true;
25             }
26         }
27         return false;
28     }
29 };

 

posted @ 2020-05-05 17:52  梦醒潇湘  阅读(262)  评论(0)    收藏  举报