C++ 中将数组元素设为相等所需的最小移动次数


假设我们有一个大小为 n 的数组,我们必须找到使所有数组元素相同的所需最小移动次数,其中移动意味着将 n - 1 个元素加 1。

因此,如果输入类似于 [3,2,3,4],则输出将为 4。

为了解决这个问题,我们将遵循以下步骤 −

  • n := nums 的大小

  • 如果 n 与 0 相同,则 −

    • 返回 0

  • 对 nums 数组进行排序

  • ans := 0

  • 对于 i 的初始化 := 0,当 i < n 时,更新(将 i 增加 1),执行 −

    • ans := ans + nums[i] - nums[0]

  • 返回 ans

示例

为了更好地理解,让我们来看看以下实现 −

 在线演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minMoves(vector<int>& nums) {
      int n = nums.size();
      if (n == 0)
         return 0;
      sort(nums.begin(), nums.end());
      int ans = 0;
      for (int i = 0; i < n; i++) {
         ans += nums[i] - nums[0];
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v = {3,2,3,4};
   cout << (ob.minMoves(v));
}

输入

{3,2,3,4}

输出

4

更新于:10-6-2020

1K+ 浏览量

职业生涯起步

通过完成课程获得认证

开始
广告
© . All rights reserved.