zoukankan      html  css  js  c++  java
  • 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 };
  • 相关阅读:
    D3.js:交互式操作
    D3.js:Update、Enter、Exit
    D3.js:动态效果
    D3.js:完整的柱形图
    D3.js:坐标轴
    D3.js
    ES 6 : 数组的扩展
    ES 6 : Math对象的扩展
    拉勾网企业图片列表效果
    拉勾网图片切换效果
  • 原文地址:https://www.cnblogs.com/VickyWang/p/6056587.html
Copyright © 2011-2022 走看看