2
public int[] threeEqualParts(int[] arr) {3
List<Integer> ones = new ArrayList<>();4
for (int i = 0; i < arr.length; i++) {9
if (ones.size() == 0) { // edge case10
return new int[] {0, 2};12
int[] ans = new int[2];13
int each = ones.size() / 3;14
for (int i = 0; i < 2 && ones.size() % 3 == 0; i++) { // for the first 2 partitions15
for (int j = 0; j < each - 1; j++) { // compare gaps16
if (ones.get(j + 1 + i * each) - ones.get(j + i * each)17
!= ones.get(j + 2 * each + 1) - ones.get(j + 2 * each)) return new int[] {-1, -1};20
ones.get((i + 1) * each - 1)22
+ (arr.length - 1 - ones.get(ones.size() - 1)); // cut point24
return ones.size() % 3 > 0 || ans[0] >= ones.get(each) || ans[1] > ones.get(2 * each)