程式語言 - LeetCode - C++ - 2033. Minimum Operations to Make a Uni-Value Grid



題目:


解答:

class Solution {
public:
    int minOperations(vector<vector<int>>& grid, int x) {
        vector<int> num;

        for (auto r : grid) {
            for (int n : r) {
                num.push_back(n);
            }
        }

        int mod = num[0] % x;
        for (int n : num) {
            if (n % x != mod) {
                return -1;
            }
        }

        sort(num.begin(), num.end());
        
        int ans = 0;
        int m = num[num.size() >> 1];

        for (int n : num) {
            ans += abs(m - n) / x;
        }

        return ans;
    }
};