跳到主要内容

517.超级洗衣机

链接:517.超级洗衣机
难度:Hard
标签:贪心、数组
简介:给定一个整数数组  machines 代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的 最少的操作步数 。如果不能使每台洗衣机中衣物的数量相等,则返回 -1 。

题解 1 - typescript

  • 编辑时间:2021-09-29
  • 执行用时:76ms
  • 内存消耗:40.1MB
  • 编程语言:typescript
  • 解法介绍:贪心,统计每个洗衣机里衣服数与平均衣服数的差。
function findMinMoves(machines: number[]): number {
const sum = machines.reduce((total, cur) => total + cur, 0);
const n = machines.length;
if (sum % n !== 0) return -1;
const avg = ~~(sum / n);
let ans = 0;
let num = 0;
for (let i = 0; i < n; i++) {
num += machines[i] - avg;
ans = Math.max(ans, Math.max(machines[i] - avg, Math.abs(num)));
}
return ans;
}