跳至主要内容

945. Minimum Increment to Make Array Unique

  • 加最少的步數讓數列的元素都不重複。
  • 排序
  • 數字差多少:increment = nums[i - 1] - nums[i] + 1
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)