First, we sort all the values, and then scan if there is any slot, the value of which is different from its previous slot.
Possibly, a bug can be caused if you forget to check corner cases: if N == 0 or N == 1, so we should return 0 or return 1, respectively.
int comparator(const void *a, const void *b)
{
if (*(int*)a == *(int*)b){
return 0;
}
if (*(int*)a < *(int*)b){
return -1;
}
return 1;
}
int solution(int A[], int N)
{
if (N == 0){
return 0;
}
qsort(A, N, sizeof(int), comparator);
int cnt = 1;
int i;
for (i = 1; i < N; i++){
if (A[i - 1] != A[i]){
cnt++;
}
}
return cnt;
}
0 件のコメント:
コメントを投稿