问题: https://leetcode.com/PRoblems/minimum-moves-to-equal-array-elements/?tab=Description 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. 给定一个长度为n的数组,每次将n-1个元素加1,寻找最小的移动次数,使得数组中数字全部相同。 分析:将n-1个元素加1,直至所有元素数相同。不如看成将最大的数-1,直至所有的数都和原来数组中最小的数相同。因为需要其他的元素跟最小的数相同,而且每次只是一个最大的值减1,就相当于总的次数等于最小元素和其他所有元素的差值之和。 C++代码:
class Solution {public: int minMoves(vector<int>& nums) { sort(nums.begin(),nums.end()); int l=nums.size(); int sum=0; for(int i=0;i<l;i++){ sum+=nums[i]-nums[0]; } return sum; }};新闻热点
疑难解答