Leetcode 823 Solution

This article provides solution to leetcode question 823 (split-array-with-same-average)

https://leetcode.com/problems/split-array-with-same-average

Solution

class Solution {
public:
    bool checkSum(vector<int>& A, int i, int target, int cnt) {
        if (target == 0 && cnt == 0)
            return true;
        else if (target <= 0 || cnt <= 0 || i == A.size())
            return false;

        for (int j = i; j < A.size(); j++)
        {
            if (j > i && A[j] == A[j - 1])
                continue;

            if (checkSum(A, j + 1, target - A[j], cnt - 1))
                return true;
        }

        return false;
    }

    bool splitArraySameAverage(vector<int>& A) {
        int n = A.size();
        int sum = 0;

        sort(A.begin(), A.end());

        for (auto val: A)
            sum += val;

        for (int i = 1; i < n; i++)
        {
            if (sum * i % n)
                continue;

            if (checkSum(A, 0, sum * i / n, i))
                return true;
        }

        return false;
    }
};