题解
算出平均值 如果除不尽 直接-1 然后每台机器减去平均值 正的表示需要给出去多少 负的需要给他多少
1、假设将机器分为A B组 A+B=0 A>0 则需要A放入B 反之B放入A
2、模拟过程中 三者取最值 machine[i] abs(sum) ans. machine[i]不能取绝对值 负数是可以从两边给的 而正数(要给出去的数量)是只能一次给一个
class Solution {
public:
int findMinMoves(vector<int>& machines) {
int n = machines.size();
int total = 0;
for (int i=0; i<n; i++) {
total += machines[i];
}
if (total % n != 0) return -1;
int per = total / n;
int ans = 0, sum = 0;
for(int i=0; i<n; i++) {
sum += machines[i] - per;
ans = max(abs(sum), max(machines[i]-per, ans));
}
return ans;
}
};