Skip to content

Commit ae41273

Browse files
authored
Create minimum-increment-to-make-array-unique.cpp
1 parent 569114e commit ae41273

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Time: O(nlogn)
2+
// Space: O(n)
3+
4+
class Solution {
5+
public:
6+
int minIncrementForUnique(vector<int>& A) {
7+
sort(A.begin(), A.end());
8+
A.emplace_back(numeric_limits<int>::max());
9+
int result = 0, duplicate = 0;
10+
for (int i = 1; i < A.size(); ++i) {
11+
if (A[i - 1] == A[i]) {
12+
++duplicate;
13+
result -= A[i];
14+
} else {
15+
int move = min(duplicate, A[i] - A[i - 1] - 1);
16+
duplicate -= move;
17+
result += move * A[i - 1] + move * (move + 1) / 2;
18+
}
19+
}
20+
return result;
21+
}
22+
};

0 commit comments

Comments
 (0)