###链接
题目链接
思路
数组之和能整除3表示可以分成3分,否则分不成。(每份记作o=sum/3)
双指针前后同时遍历并累加和,当前后都遍历都累加到o则剩下的部分也必为o,符合!
代码
class Solution {
public static boolean canThreePartsEqualSum(int[] A) {
int sum, o, one, two;
sum = 0;
int i, j;
for (int a : A) {
sum += a;
}
o = sum / 3;
i = 0;
j = A.length - 1;
one = A[i];
two = A[j];
if (sum % 3 != 0) {
return false;
}
while (i + 1 < j) {
if (one == o && two == o) {
return true;
}
if (one != o) {
i++;
one += A[i];
}
if (two != o) {
j--;
two += A[j];
}
}
return false;
}
}