517. 超级洗衣机
思路:贪心
无法满足的条件是:sum % n这个时候return -1
减去平均值之后,如果为正数需要向其它格子移动的个数,可以在边遍历的同时维护这个最大值。
同时,考虑整体的移动情况,如果左边所有格子数量为正数,需要向右边格子移动个数,维护一个前缀和最大值,不断更新答案
class Solution {
public:
int findMinMoves(vector<int>& m) {
int n = m.size();
int tol = accumulate(m.begin(), m.end(), 0);
if (tol % n) return -1;
int avg = tol / n;
int ans = 0, sum = 0;
for (auto num : m) {
num -= avg;
sum += num;
ans = max(ans, max(abs(sum), num));
}
return ans;
}
};