题目

类型:Array

image.png

解题思路

只需要找出让数组所有元素相等的最小操作次数,所以不需要考虑数组中各个元素的绝对大小,也就是不需要真正算出数组中所有元素相等时的元素值,只需要考虑数组中元素相对大小的变化即可。
因此,每次操作既可以理解为使 n−1 个元素增加 1,也可以理解使 1 个元素减少 1。后者更利于计算。

代码

  1. class Solution {
  2. public int minMoves(int[] nums) {
  3. int minNum = Arrays.stream(nums).min().getAsInt();
  4. int res = 0;
  5. for (int num : nums) {
  6. res += num - minNum;
  7. }
  8. return res;
  9. }
  10. }