• Time:O(n)
• Space:O(1)

## C++

``````class Solution {
public:
int findMinMoves(vector<int>& machines) {
const int dresses = accumulate(begin(machines), end(machines), 0);
if (dresses % machines.size() != 0)
return -1;

int ans = 0;
int inout = 0;
const int average = dresses / machines.size();

for (const int dress : machines) {
inout += dress - average;
ans = max({ans, abs(inout), dress - average});
}

return ans;
}
};
``````

## JAVA

``````class Solution {
public int findMinMoves(int[] machines) {
int dresses = Arrays.stream(machines).sum();
if (dresses % machines.length != 0)
return -1;

int ans = 0;
int inout = 0;
final int average = dresses / machines.length;

for (final int dress : machines) {
inout += dress - average;
ans = Math.max(ans, Math.max(Math.abs(inout), dress - average));
}

return ans;
}
}
``````

## Python

``````class Solution:
def findMinMoves(self, machines: List[int]) -> int:
dresses = sum(machines)

if dresses % len(machines) != 0:
return -1

ans = 0
average = dresses // len(machines)
inout = 0

for dress in machines:
inout += dress - average
ans = max(ans, abs(inout), dress - average)

return ans
``````