Leetcode 453. Minimum Moves to Equal Array Elements
Given an integer array nums
of size n
, you need to find the minimum number of moves required to make all elements equal. In one move, you can increment n - 1
elements by 1.
Q: Can the array contain negative numbers? A: Yes, the array can contain both positive and negative integers as well as zero.
Q: Is the array allowed to contain duplicate numbers? A: Yes, the array can contain duplicate numbers.
Q: Is there a constraint on the size of the array?
A: The typical constraints apply, however, we should presume that 1 <= nums.length <= 10^4
and -10^6 <= nums[i] <= 10^6
.
To solve this problem, we need to efficiently determine the minimum moves required to make all the elements equal. Here’s the step-by-step strategy:
n - 1
elements by 1 is equivalent to decrementing one element by 1 when considering the offset to balance all elements.#include <iostream>
#include <vector>
#include <algorithm>
int minMoves(std::vector<int>& nums) {
int minElement = *std::min_element(nums.begin(), nums.end());
int moves = 0;
for (int num : nums) {
moves += num - minElement;
}
return moves;
}
int main() {
std::vector<int> nums = {1, 2, 3};
std::cout << "Minimum moves required: " << minMoves(nums) << std::endl;
return 0;
}
n
is the number of elements in the array.
This efficiency ensures the solution is scalable and handles the upper constraint limits gracefully.
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?