-
-
Notifications
You must be signed in to change notification settings - Fork 8.9k
/
Copy pathSolution.java
27 lines (27 loc) · 892 Bytes
/
Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public int maximumScore(int[] nums, int[] multipliers) {
final int inf = 1 << 30;
int n = nums.length, m = multipliers.length;
int[][] f = new int[m + 1][m + 1];
for (int i = 0; i <= m; i++) {
Arrays.fill(f[i], -inf);
}
f[0][0] = 0;
int ans = -inf;
for (int i = 0; i <= m; ++i) {
for (int j = 0; j <= m - i; ++j) {
int k = i + j - 1;
if (i > 0) {
f[i][j] = Math.max(f[i][j], f[i - 1][j] + multipliers[k] * nums[i - 1]);
}
if (j > 0) {
f[i][j] = Math.max(f[i][j], f[i][j - 1] + multipliers[k] * nums[n - j]);
}
if (i + j == m) {
ans = Math.max(ans, f[i][j]);
}
}
}
return ans;
}
}