Skip to content

Commit 273bc94

Browse files
committed
Solution as on 31-03-2022 08:45 pm
1 parent b86320e commit 273bc94

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

0410. Split Array Largest Sum.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// 410. Split Array Largest Sum
2+
3+
class Solution
4+
{
5+
public:
6+
int canSplit(int mid, vector<int> &nums, int &m)
7+
{
8+
int sum = 0;
9+
int curr_sum = 0;
10+
for (int i : nums)
11+
{
12+
curr_sum += i;
13+
if (curr_sum > mid)
14+
{
15+
sum += 1;
16+
curr_sum = i;
17+
}
18+
}
19+
return (sum + 1 <= m);
20+
}
21+
22+
int splitArray(vector<int> &nums, int m)
23+
{
24+
int left = *max_element(nums.begin(), nums.end());
25+
int right = accumulate(nums.begin(), nums.end(), 0);
26+
int res = right; // larger of two
27+
while (left <= right)
28+
{
29+
int mid = left + (right - left) / 2;
30+
if (canSplit(mid, nums, m))
31+
{
32+
res = mid;
33+
right = mid - 1;
34+
}
35+
else
36+
left = mid + 1;
37+
}
38+
39+
return res;
40+
}
41+
};

0 commit comments

Comments
 (0)