leetcode945

1.分析边界最大值为40000*2=80000
2.等价性确认:
当前节点+3和+1+2是等价的
比如:
1 1 1 2
–>
1 2 3 4
4 = 2+2 = 1+3
所以,不用管,
当i重复了x次,
直接转移状态给i+1,i+2..i+x-1就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int minIncrementForUnique(int[] A) {
int[] f = new int[80000];
for (int i=0;i<80000;i++){
f[i] = 0;
}
int len = A.length;
for(int i=0;i<len;i++){
f[A[i]]++;
}
int sum = 0;
for(int i=0;i<80000;i++){
if (f[i]>1){
for(int j=1;j<f[i];j++){
sum +=j;
f[i+j]++;
}
}
}
return sum;
}
}