- 题目链接927. Three Equal Parts
- 题目意思
- 把一个只含有1和0的数组成3分,每分二进制表示的数相同
- 题目解答
- 计算1的数量count,如果 count % 3 != 0 ,说明分不了
- 计算每个part1的数量 count =/ 3
- 找初始1的位置 start
- 找第 count + 1 个1 的位置mid
- 找第 2 * count + 1 个1的位置 end
- 匹配

public int[] threeEqualParts(int[] A) {
int count = Arrays.stream(A).sum();
if (count == 0) return new int[]{0, A.length - 1};
if (count % 3 != 0) return new int[]{-1, -1};
count /= 3;
int i = 0;
for (i = 0; i < A.length; i++) {
if (A[i] == 1) break;
}
int start = i, count1 = 0;
i = 0;
for (count1 = 0, i = 0; i < A.length; i++) {
if (A[i] == 1) count1++;
if (count1 == count + 1) break;
}
int mid = i;
for (count1 = 0, i = 0; i < A.length; i++) {
if (A[i] == 1) count1++;
if (count1 == 2 * count + 1) break;
}
int end = i;
while (end < A.length && A[start] == A[mid] && A[mid] == A[end]) {
start++;mid++;end++;
}
if (end == A.length) return new int[]{start - 1, mid};
return new int[]{-1, -1};
}