@Override
public int totalStrength(int[] strength) {
int n = strength.length;
if (n == 1) {
long temp4 = (long) strength[0] * strength[0];
temp4 = temp4 % ((long) (Math.pow(10.0, 9.0)) + 7);
return (int) temp4;
}
int left = 0;
int right = 0;
long mid = 0;
int min = Integer.MAX_VALUE;
int point = 0;
int secfen = n / 2;
int flag = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
if (strength[i] < min) {
min = strength[i];
point = i;
} else if (strength[i] == min) {
int dis = Math.abs(point - secfen);
if (dis < flag) {
point = i;
flag = dis;
}
}
}
if (point != 0) left = totalStrength(Arrays.copyOfRange(strength, 0, point));
if (point != n - 1) right = totalStrength(Arrays.copyOfRange(strength, point + 1, n));
long temp2 = 0;
for (int j = 0; j < n; j++) {
long temp = (long) (Math.min(j, point) + 1) * (n - Math.max(j, point));
temp2 = temp2 + strength[j] * temp;
temp2 = temp2 % ((int) (Math.pow(10.0, 9.0)) + 7);
}
mid = (long) min * temp2;
long temp3 = mid + left + right;
temp3 = temp3 % ((int) (Math.pow(10.0, 9.0)) + 7);
int all = (int) temp3;
return all;
}
@PostMapping("/totalStrength")
public ResponseResult<Integer> totalStrength(){
int strength[] = {747, 812, 112, 1230, 1426, 1477, 1388, 976, 849, 1431, 1885};
int totalStrength = addressService.totalStrength(strength);
return ResponseResult.e(ResponseCode.OK, totalStrength);
}