超级洗衣机

题解方法

  • 贪心
  • 计算经过当前洗衣机左右两侧洗衣机需要调整次数的最大“流量”

贪心

  • 最大需要调整次数的位置i达到平衡时,其他需要调整的位置一定也达到平衡

核心代码

1
2
3
4
5
6
for (int num: machines) {
num -= avg; // i位置需要调整的次数
sum += num; // 位置0到i需要调整的总次数

res = Math.max(res, Math.max(Math.abs(sum), num));
}
  • Math.abs(sum),可能为负数,缺少时需要增加的情况,故为绝对值
  • num,可能为负数,但缺少时可以是多个位置同时向此位置增加,故不能加绝对值;仅需要考虑该值特别大时的情况(num>sum)

题目来源

517. 超级洗衣机 - 力扣(LeetCode) (leetcode-cn.com)