2014年7月26日土曜日

Lesson 4: Distinct (Distinct)

簡単な問題です。

まずソートして、それから先頭から配列をスキャン。前の要素と違う要素にあたったら、カウンターを増やす。

多分、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 件のコメント:

コメントを投稿