453. 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.length1 <= 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 \(\textit{nums}\) be \(\textit{mi}\), the sum of the array be \(\textit{s}\), and the length of the array be \(\textit{n}\).
Assume the minimum number of operations is \(\textit{k}\), and the final value of all elements in the array is \(\textit{x}\). Then we have:
Substituting the second equation into the first equation, we get:
Therefore, the minimum number of operations is \(\textit{s} - \textit{n} \times \textit{mi}\).
The time complexity is \(O(n)\), and the space complexity is \(O(1)\). Here, \(n\) is the length of the array.
1 2 3 | |
1 2 3 4 5 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 | |