Skip to content

Commit a458ec6

Browse files
author
Hieu Luong
committed
Solve Problem 410 - Split Array Largest Sum
1 parent 2f97660 commit a458ec6

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package binarysearch;
2+
3+
public class Problem410_SplitArrayLargestSum {
4+
5+
public int splitArray(int[] A, int m) {
6+
int max = 0; long sum = 0;
7+
for (int a : A) {
8+
max = Math.max(max, a);
9+
sum += a;
10+
}
11+
12+
if (m == 1) return (int)sum;
13+
14+
long lo = max, hi = sum;
15+
while (lo <= hi) {
16+
long mid = (lo+hi)/2;
17+
if (isValid(A, m, mid)) hi = mid-1;
18+
else lo = mid+1;
19+
}
20+
21+
return (int)lo;
22+
}
23+
24+
private boolean isValid(int[] A, int m, long max) {
25+
int sum = 0, count = 1;
26+
for (int a : A) {
27+
sum += a;
28+
if (sum > max) {
29+
sum = a;
30+
count++;
31+
if (count > m) return false;
32+
}
33+
}
34+
return true;
35+
}
36+
}

0 commit comments

Comments
 (0)