Instagram
youtube
Facebook
Twitter

Minimum Moves to Equal Array Elements II

In this tutorial, we are going to solve a leetcode problem, Minimum Moves to Equal Array II in python.

Task:

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.

Test cases are designed so that the answer will fit in a 32-bit integer.

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:
    def minMoves2(self, nums: List[int]) -> int:
        nums.sort()
        a = nums[len(nums)//2]
        # print(nums)
        count = 0
        for i in range(len(nums)):
            count += abs(nums[i] - a)
        return count

Steps:

step1: In this problem, we first need to analyze how to make all elements equal in an array in minimum moves.

step2: First we will sort the array and then select the middle element of the list then we make other elements equal to the middle one, in this way we will be using minimum moves.

step3: After sorting the nums, we declare and initiated the middle variable a and count the variable to 0.

step4: Now, we loop into the nums and increment the count as absolute difference of nums[I] - a.

step5: After the loop, we return the count as our final answer.