548. Split Array with Equal Sum
Input: [1,2,1,2,1,2,1]
Output: True
Explanation:
i = 1, j = 3, k = 5.
sum(0, i - 1) = sum(0, 0) = 1
sum(i + 1, j - 1) = sum(2, 2) = 1
sum(j + 1, k - 1) = sum(4, 4) = 1
sum(k + 1, n - 1) = sum(6, 6) = 1// Brute Force
bool splitArray(vector<int>& nums) { // time: O(n^3); space: O(n)
int n = nums.size();
vector<int> sums(n, 0);
sums[0] = nums[0];
for (int i = 1; i < n; ++i) {
sums[i] = sums[i - 1] + nums[i];
}
for (int i = 1; i < n - 5; ++i) {
int sum1 = sums[i - 1];
for (int j = i + 2; j < n - 3; ++j) {
int sum2 = sums[j - 1] - sums[i];
if (sum2 != sum1) continue;
for (int k = j + 2; k < n - 1; ++k) {
int sum3 = sums[k - 1] - sums[j];
int sum4 = sums[n - 1] - sums[k];
if (sum2 == sum3 && sum3 == sum4) {
return true;
}
}
}
}
return false;
}Last updated