Minimum Space Wasted From Packaging LeetCode solution in Java

1
class Solution {
2
public int minWastedSpace(int[] packages, int[][] boxes) {
3
Arrays.sort(packages);
4
int n = packages.length, k = -1;
5
long sum = 0, ans = Long.MAX_VALUE;
6
int[] pos = new int[100001];
7
for (int i = 0; i < 100001; i++) { // precompute jump position.
8
while (k < n - 1 && packages[k + 1] == i) {
9
sum += packages[++k];
10
}
11
pos[i] = k;
12
}
13
for (int[] b : boxes) {
14
Arrays.sort(b);
15
long cost = -sum;
16
k = -1;
17
for (int i = 0; i < b.length; i++) {
18
if (pos[b[i]] >= 0) {
19
int cnt = pos[b[i]] - k;
20
cost += 1L * cnt * b[i];
21
k = pos[b[i]];
22
}
23
}
24
ans = k == n - 1 ? Math.min(cost, ans) : ans;
25
}
26

27
return ans == Long.MAX_VALUE ? -1 : (int) (ans % (int) (1e9 + 7));
28
}
29
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0