LeetCode 453 Minimum Moves to Equal Array Elements

Posted SillyVicky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 453 Minimum Moves to Equal Array Elements相关的知识,希望对你有一定的参考价值。

Problem:

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]

Summary:

对于一个长度为n的整型数数组,每步将n-1个元素加1,求最少需要多少步,能使数组中的数字全部相同。

Analysis:

若使数组尽快满足题目要求,则需要每次给除去最大值的其余数字加1,但这种方法效率过低,可以换一种思路。每次将数组中的n-1个数字加1,相当于将剩余的一个数字减1。所以只需找到数组中的最小值m,计算m与数组中其他数字差的累计和即可。

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

 

以上是关于LeetCode 453 Minimum Moves to Equal Array Elements的主要内容,如果未能解决你的问题,请参考以下文章

453. Minimum Moves to Equal Array Elements(LeetCode)

[leetcode-453-Minimum Moves to Equal Array Elements]

LeetCode 453. Minimum Moves to Equal Array Elements

[LeetCode&Python] Problem 453. Minimum Moves to Equal Array Elements

LeetCode 453. Minimum Moves to Equal Array Elements C#

(Java) LeetCode 453. Minimum Moves to Equal Array Elements —— 最小移动次数使数组元素相等