Maximum Value of K Coins From Piles LeetCode solution in Java

1
class Solution {
2
public int maxValueOfCoins(List<List<Integer>> piles, int k) {
3
int n = piles.size();
4
int[][] ans = new int[n + 1][2001];
5
Collections.sort(piles, (List<Integer> a, List<Integer> b) -> b.size() - a.size());
6
for (int i = 1; i <= k; i++) {
7
for (int j = 1; j <= n; j++) {
8
int sizeOfPile = piles.get(j - 1).size();
9
List<Integer> pile = piles.get(j - 1);
10
int sum = 0;
11
ans[j][i] = ans[j - 1][i];
12
for (int l = 1; l <= Math.min(i, sizeOfPile); l++) {
13
// Take K from this pile + remaining from previous piles
14
sum += pile.get(l - 1);
15
int rem = i - l;
16
ans[j][i] = Math.max(ans[j][i], sum + ans[j - 1][rem]);
17
}
18
}
19
}
20

21
return ans[n][k];
22
}
23
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0