LC 396 Rotate Function(M)
解题思路 DP
public int maxRotateFunction(int[] A) {
int n = A.length;
int sum = 0;
int f = 0;
// count f0 and sum
for(int i = 0; i < n; i++){
f += i *A[i];
sum += A[i];
}
int max = f;
for(int j = 1; j < n; j++){
// 加一个sum 并 减去左移的
f = f + sum - n*A[n-j];
max = Math.max(max, f);
}
return max;
}Last updated