给你一个整数数组 arr
,只有可以将其划分为三个和相等的 非空 部分时才返回 true
,否则返回 false
。
形式上,如果可以找出索引 i + 1 < j
且满足 (arr[0] + arr[1] + ... + arr[i] == arr[i + 1] + arr[i + 2] + ... + arr[j - 1] == arr[j] + arr[j + 1] + ... + arr[arr.length - 1])
就可以将数组三等分。
示例 1:
输入:arr = [0,2,1,-6,6,-7,9,1,2,0,1] 输出:true 解释:0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1
class Solution {
public boolean canThreePartsEqualSum(int[] arr) {
int num = 0;
for (int i = 0; i < arr.length; i++) {
num+=arr[i];
}
if(num%3!=0) return false;
num/=3;
int a=0;
int n=0;
for (int i = 0; i < arr.length-1; i++) {
a+=arr[i];
if(a==num) {
a=0;
n++;
if(n==2) return true;
}
}
return false;
}
}