77场双周赛 第二题
中等题也可一试 前缀和就可以
呜呜呜 int改成long
提交错了两次 因为数据类型
emo
class Solution {
public int minimumAverageDifference(int[] nums) {
int ans = 0;
int n = nums.length;
long[] s = new long[n];
long[] ds = new long[n];
s[0] = nums[0];
for(int i = 1; i < n; i ++){
s[i] = nums[i] + s[i - 1];
}
ds[n - 1] = 0;
for(int i = n - 2; i >= 0; i --){
ds[i] = nums[i + 1] + ds[i + 1];
}
long left, right, c;
long min = Integer.MAX_VALUE;
for(int i = 0; i < n - 1; i ++){
left = s[i] / (i + 1);
right = ds[i] / (n - i - 1);
c = Math.abs(left - right);
if(c < min) ans = i;
min = Math.min(min, c);
}
long d = Math.abs(s[n - 1] / n - 0);
if(d >= min) {
return ans;
}else{
return n - 1;
}
}
}