LeetCode - 462. Minimum Moves to Equal Array Elements II - 思路詳解 - C++

題目

Given a non-empty integer array, find the minimum number of moves required to make all array elements equal, where a move is incrementing a selected element by 1 or decrementing a selected element by 1.

You may assume the array’s length is at most 10,000.

翻譯

假設有一個數組,找出最小的操作使得十足滿足所有的元素都相等。操作有對選定數加一,對選定的數減一。

可以假設數組長度最大10000

思路

通過分析,可以知道,最後所有的值會被變成中位數T。那麼,我們就可以通過計算A[i]到T的距離,累計即可得到操作次數

代碼

class Solution {
public:
    int minMoves2(vector<int>& nums) {
       sort(nums.begin(),nums.end());
       int res = 0;
       int mid = nums[nums.size()/2];
       for(int num:nums){
           res += abs(num - mid);
       }
        return res;
    }
};
發佈了68 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章