Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Minimum Moves to Equal Array Elements trong C++


Cho mảng nums, mỗi phép toán tăng n-1 phần tử lên 1. Tìm số phép tối thiểu để tất cả phần tử bằng nhau.

Quan sát: Tăng n-1 phần tử = giảm 1 phần tử còn lại. Do đó số phép = tổng (nums[i] - min).

Ví dụ: [3,2,3,4] → min=2 → (3-2)+(2-2)+(3-2)+(4-2)=4.

Ví dụ triển khai C++

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int minMoves(vector<int>& nums) {
        int mn = *min_element(nums.begin(), nums.end());
        long long ans = 0;
        for (int x : nums) ans += x - mn;
        return ans;
    }
};

int main() {
    Solution ob;
    vector<int> v = {3,2,3,4};
    cout << ob.minMoves(v); // 4
    return 0;
}

Đầu vào / Đầu ra

Input: {3,2,3,4}
Output: 4