---
description: Today 1 leet , tomorrow 頂天leet地
image: https://leetcode.com/static/images/LeetCode_Sharing.png
---
# Minimum Increment to Make Array Unique
[題目網址<i class="fa fa-link"></i>](https://leetcode.com/problems/minimum-increment-to-make-array-unique/)
## 題目敘述
Given an array of integers nums, a move consists of choosing any `nums[i]`, and incrementing it by `1`.
Return the least number of moves to make every value in `nums` unique.
:::spoiler **Example 1**
> **Input:** [1,2,2]
> **Output:** 1
> **Explanation:** After 1 move, the array could be [1, 2, 3].
:::
:::spoiler **Example 2**
> **Input:** nums = [3,2,1,2,1,7]
> **Output:** 6
> **Explanation:** After 6 moves, the array could be [3, 4, 1, 2, 5, 7].
It can be shown with 5 or less moves that it is impossible for the array to have all unique values.
:::
## 解題思維
將nums排序,預設pre=nums[0],遍歷nums並計算pre-num[i]的總和
(檢測pre與num[i]大小關係👉找尋差值👉更新pre值)
## 程式碼
```cpp=
class Solution {
public:
int minIncrementForUnique(vector<int>& nums) {
int sum=0,pre;
sort(nums.begin(),nums.end());
if(nums.size()==0)
return 0;
pre=nums[0];
for(int i=1;i<nums.size();i++)
{
if(nums[i]==pre)
{
sum++;
pre=nums[i]+1;
}
else if(pre>nums[i])
{
sum+=pre-nums[i]+1;
pre=pre+1;
}
else
{
pre=nums[i];
}
}
return sum;
}
};
```
$O(N\log_2N)$
###### tags: `LeetCode` `Array`