给定整数数组 A,每次 move 操作将会选择任意 A[i]
,并将其递增 1
。
返回使 A
中的每个值都是唯一的最少操作次数。
int minIncrementForUnique(int* A, int ASize) {
int flag[41000];
int i;
int times = 0;
memset(flag, 0, sizeof(flag));
for(i = 0; i < ASize; ++i){
flag[A[i]] ++;
}
for(i = 0; i < 41000; ++i){
if(flag[i] > 1){
flag[i+1] += flag[i]-1;
times += flag[i]-1;
}
}
return times;
}