Super Washing Machines - Problem

You have n super washing machines on a line. Initially, each washing machine has some dresses or is empty.

For each move, you could choose any m (1 ≤ m ≤ n) washing machines, and pass one dress of each washing machine to one of its adjacent washing machines at the same time.

Given an integer array machines representing the number of dresses in each washing machine from left to right on the line, return the minimum number of moves to make all the washing machines have the same number of dresses.

If it is not possible to do it, return -1.

Input & Output

Example 1 — Basic Imbalance
$ Input: machines = [1,0,5]
Output: 3
💡 Note: Total = 6, target = 2 each. Machine 2 has 3 excess dresses that must be distributed, requiring 3 moves minimum.
Example 2 — Impossible Case
$ Input: machines = [0,3,0]
Output: 2
💡 Note: Total = 3, target = 1 each. Middle machine distributes one dress left and right, taking 2 moves total.
Example 3 — Already Balanced
$ Input: machines = [2,2,2]
Output: 0
💡 Note: All machines already have equal dresses (2 each), so no moves needed.

Constraints

  • 1 ≤ machines.length ≤ 104
  • 0 ≤ machines[i] ≤ 105

Visualization

Tap to expand
Super Washing Machines INPUT Washing Machines Array 1 M[0]=1 0 M[1]=0 5 M[2]=5 machines = [1, 0, 5] Total dresses: 6 Machines: 3 Target per machine: 2 (6/3 = 2, divisible - OK) ALGORITHM STEPS 1 Calculate Target target = sum/n = 6/3 = 2 2 Track Running Balance balance = cumulative (m[i]-target) 3 Compute Flow at Each i max(|balance|, excess) 4 Track Maximum result = max of all steps i=0: diff=-1, bal=-1, max=1 i=1: diff=-2, bal=-3, max=3 i=2: diff=+3, bal=0, max=3 Result = max(1, 3, 3) = 3 M[2] needs to pass 3 dresses left (bottleneck) FINAL RESULT Balanced State (after 3 moves) 2 2 2 Minimum Moves 3 Move Sequence: Move 1: [1,0,5] --> [1,1,4] Move 2: [1,1,4] --> [1,2,3] Move 3: [1,2,3] --> [2,2,2] OK - All balanced! Key Insight: Greedy Flow Analysis The bottleneck is the machine that needs to give away the most dresses. Machine M[2] has 5 dresses but needs only 2, so it must pass 3 dresses to its left neighbor (one at a time). This determines the minimum moves. The running balance tracks cumulative flow needed through each position. Max of |balance| and excess = answer. TutorialsPoint - Super Washing Machines | Greedy Flow Analysis
Asked in
Google 15 Microsoft 12 Amazon 8
23.0K Views
Medium Frequency
~25 min Avg. Time
890 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen