Problem Statement

Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal.

In one move, you can increment n - 1 elements of the array by 1.

Example 1:

Input: nums = [1,2,3]
Output: 3
Explanation: Only three moves are needed (remember each move increments two elements):
[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

Example 2:

Input: nums = [1,1,1]
Output: 0

Constraints:

Problem Link

Minimum Moves to Equal Array Elements - LeetCode

Approach

A more natural way to think about this question:there is a staircase on which every numbers in array stand with corresponding step. '1' is on the 1st step and '5' on the 5th step.

A single move makes n-1 numbers step up, while on the other hand, we can also think a move as the remaining one step down. The relative distance between the numbers are same.

Our goal is to make all numbers on the same step.

Rather than move n-1 numbers up every time, why not just move one number down?