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
.
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
class Solution:
def minMoves2(self, nums: List[int]) -> int:
n = len(nums)
nums.sort()
p = [0]
for el in nums:
p.append(p[-1] + el)
mindels = float('inf')
for i in range(1, n + 1):
currdels = nums[i - 1] * (2 * i - n) - 2 * p[i]
mindels = min(mindels, currdels)
return mindels + p[-1]
Comments
Post a Comment