945. Minimum Increment to Make Array Unique

class Solution {
public:
    int minIncrementForUnique(vector<int>& nums)
    {
        int moves = 0;

        int n = nums.size();

        sort(nums.begin(), nums.end());

        // nums = [1, 1, 2, 2, 3, 7]
        for (int i = 1; i < n; ++i)
        {
            // 如果發現目前的數字小於等於前一個數字
            if (nums[i - 1] >= nums[i])
            {

                // 要加的數字等於兩者之差 + 1
                int increment = nums[i - 1] - nums[i] + 1;
                moves += increment;
                // 更新目前的數字
                nums[i] = nums[i - 1] + 1;
            }
        }
        return moves;
    }
};
  • T: O(NlogN)O(N \cdot \log N)
  • S: O(1)O(1)