力扣第945题 使数组唯一的最小增量

力扣第945题 使数组唯一的最小增量

class Solution {
    public:
    int minIncrementForUnique(vector<int>& A) {
        sort(A.begin(), A.end());
        int ans = 0, taken = 0;
        for (int i = 1; i < A.size(); i++) {
            if (A[i - 1] == A[i]) {
                taken++;
                ans -= A[i];
            }
            else {
                int give = min(taken, A[i] - A[i - 1] - 1);
                ans += give * (give + 1) / 2 + give * A[i - 1];
                taken -= give;
            }
        }

        if (taken > 0) {
            ans += taken * (taken + 1) / 2 + taken * A.back();
        }
    
        return ans;
    }
};
原文地址:https://www.cnblogs.com/woodjay/p/12549554.html