LeetCode 0453. Minimum Moves to Equal Array Elements Solution in Java, Python, C++, JavaScript, Go & Rust | Explanation + Code

CoderIndeed
0
0453. Minimum Moves to Equal Array Elements

Description

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:

  • n == nums.length
  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • The answer is guaranteed to fit in a 32-bit integer.

Solutions

Solution 1: Mathematics

Let the minimum value of the array nums be mi, the sum of the array be s, and the length of the array be n.

Assume the minimum number of operations is k, and the final value of all elements in the array is x. Then we have:

$$ \begin{aligned} \textit{s} + (\textit{n} - 1) \times \textit{k} &= \textit{n} \times \textit{x} \ \textit{x} &= \textit{mi} + \textit{k} \ \end{aligned} $$

Substituting the second equation into the first equation, we get:

$$ \begin{aligned} \textit{s} + (\textit{n} - 1) \times \textit{k} &= \textit{n} \times (\textit{mi} + \textit{k}) \ \textit{s} + (\textit{n} - 1) \times \textit{k} &= \textit{n} \times \textit{mi} + \textit{n} \times \textit{k} \ \textit{k} &= \textit{s} - \textit{n} \times \textit{mi} \ \end{aligned} $$

Therefore, the minimum number of operations is s - n × mi.

The time complexity is O(n), and the space complexity is O(1). Here, n is the length of the array.

PythonJavaC++GoTypeScript
class Solution: def minMoves(self, nums: List[int]) -> int: return sum(nums) - min(nums) * len(nums)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !