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;
}