Skip to content

Commit e68e972

Browse files
authored
Create split-array-with-equal-sum.cpp
1 parent 14513be commit e68e972

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

C++/split-array-with-equal-sum.cpp

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Time: O(n^2)
2+
// Space: O(n)
3+
4+
class Solution {
5+
public:
6+
bool splitArray(vector<int>& nums) {
7+
if (nums.size() < 7) {
8+
return false;
9+
}
10+
11+
vector<int> sum(nums.size());
12+
sum[0] = nums[0];
13+
for (int i = 1; i < nums.size(); ++i) {
14+
sum[i] = sum[i - 1] + nums[i];
15+
}
16+
for (int j = 3; j < nums.size() - 3; ++j) {
17+
unordered_set<int> lookup;
18+
for (int i = 1; i < j - 1; ++i) {
19+
if (sum[i - 1] == sum[j - 1] - sum[i]) {
20+
lookup.emplace(sum[i - 1]);
21+
}
22+
}
23+
for (int k = j + 2; k < nums.size() - 1; ++k) {
24+
if (sum[nums.size() - 1] - sum[k] == sum[k - 1] - sum[j] &&
25+
lookup.count(sum[k - 1] - sum[j])) {
26+
return true;
27+
}
28+
}
29+
}
30+
return false;
31+
}
32+
};

0 commit comments

Comments
 (0)