leetcode 945. Minimum Increment to Make Array Unique 使数组唯一的最小增量
·
Problem: 945. Minimum Increment to Make Array Unique 使数组唯一的最小增量
排序,然后统计每个数字的频次,对ch[a] > 1的,需要累加的,找到后续ch[l]==0的最小数字,累加的值就是 ans += l - a,做标记ch[l] = 1以及频次修改ch[a]–,l继续向后的,这样找到的就是最小值
Code
class Solution {
public:
int ch[101001];
int minIncrementForUnique(vector<int>& nums) {
unordered_map<int, int> ump;
sort(nums.begin(), nums.end());
memset(ch, 0, sizeof(ch));
for(int & i : nums) {
ch[i]++;
}
int n = nums.size(), l = nums[0], ans = 0, a;
for(int i = 0; i < n; i++) {
a = nums[i];
if(i > 0 && a==nums[i-1]) continue;
// l = a + 1;
while(ch[a] > 1) {
if(l < a + 1) l = a + 1;
while(ch[l]!=0) {
l++;
}
ans += l - a;
ch[a]--;
ch[l] = 1;
l++;
}
}
return ans;
}
};
更多推荐

所有评论(0)