LeetCode462. Minimum Moves to Equal Array Elements II

来源:互联网 发布:matlab读取数据和文件 编辑:程序博客网 时间:2024/05/01 09:12

与453. Minimum Moves to Equal Array Elements类似,where a move is incrementing a selected element by 1 or decrementing a selected element by 1.这个是选择一个元素增加或者减少1,以使得所有的元素相等。求最少的操作次数。

思路:找出最中间的数,最后所有的数都逼近中间。注意小心数组越界。

class Solution {public:    int minMoves2(vector<int>& nums) {        int move = 0;        sort(nums.begin(),nums.end());        vector<int>::size_type sz = nums.size();        vector<int>::size_type median ;        vector<int>::size_type first = 0;        vector<int>::size_type last = sz-1;        if (sz==1) return move;        if ( sz %2 ==0)            median = sz /2;        else            median = (sz-1) / 2;        int target = nums[median];        for (int i=0;i<=median;i++)            move = move + (target-nums[i]);        for (int i=sz-1;i>=median;i--)            move = move + (nums[i]-target);        return move;    }};
0 0
原创粉丝点击