まずソートして、それから先頭から配列をスキャン。前の要素と違う要素にあたったら、カウンターを増やす。
多分、N == 0の時とかのチェックし忘れでバグになることがあるのではと。
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 件のコメント:
コメントを投稿