2021-05-19 Daily-Challenge
I'm busy playing Dungeons & Fighters, so won't do pick up.
Today I have done leetcode's May LeetCoding Challenge with cpp
.
May LeetCoding Challenge 19
Description
Minimum Moves to Equal Array Elements II
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 or decrement an element of the array by 1
.
Example 1:
Input: nums = [1,2,3]
Output: 2
Explanation:
Only two moves are needed (remember each move increments or decrements one element):
[1,2,3] => [2,2,3] => [2,2,2]
Example 2:
Input: nums = [1,10,2,9]
Output: 16
Constraints:
n == nums.length
1 <= nums.length <= 105
-109 <= nums[i] <= 109
Solution
class Solution {
public:
int minMoves2(vector<int>& nums) {
int len = nums.size();
sort(nums.begin(), nums.end());
long long sum = 0;
for(auto i : nums) sum += i;
long long cur = 0;
long long answer = INT_MAX;
for(long long i = 0; i < len; ++i) {
answer = min(answer, (nums[i] * i - cur) + (sum - cur - (len - i) * nums[i]));
cur += nums[i];
}
return answer;
}
};