[1013] 将数组分成和相等的三个部分

###链接
题目链接

思路

数组之和能整除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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_35416214/article/details/106273804