Minimum Moves to Equal Array Elements

medium array math

Problem

In one move you may increment n−1 elements by 1. Return the minimum number of moves to make all elements equal. Equivalently (relative), each move decrements one element by 1 — so the answer is Σ(nums[i] − min).

Inputnums = [1, 2, 3]
Output3
(2−1) + (3−1) = 1 + 2 = 3 decrements.

def min_moves(nums):
    m = min(nums)
    return sum(x - m for x in nums)
function minMoves(nums) {
  const m = Math.min(...nums);
  return nums.reduce((acc, x) => acc + (x - m), 0);
}
class Solution {
    public int minMoves(int[] nums) {
        int m = Integer.MAX_VALUE;
        for (int x : nums) m = Math.min(m, x);
        int total = 0;
        for (int x : nums) total += x - m;
        return total;
    }
}
int minMoves(vector<int>& nums) {
    int m = *min_element(nums.begin(), nums.end());
    int total = 0;
    for (int x : nums) total += x - m;
    return total;
}
Time: O(n) Space: O(1)