453. Minimum Moves to Equal Array Elements

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

Example:

Input:
[1,2,3]

Output:
3

Explanation:
Only three moves are needed (remember each move increments two elements):

[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

思路:

题目希望用最少的步骤是的所有的数字相同,每次n-1个元素加1,观察例子可以看出每次是的不是最大的n-1个数字加1,那么转换过来就是每次使最大的那个数字减1,所以为了是的数组一致,所有的数字都必然会减到最小的那个数字。

 1 class Solution {
 2 public:
 3     int minMoves(vector<int>& nums) {
 4         if(nums.size()==0)
 5             return 0;
 6         int min_num=nums[0];
 7         for(int n:nums)
 8             min_num=min(min_num,n);
 9         int res=0;
10         for(int n:nums)
11             res+=n-min_num;
12         return res;
13     }
14 };

 

posted @ 2016-12-20 16:08  SarahLiu77  阅读(186)  评论(0编辑  收藏  举报