https://codility.com/programmers/lessons/15
セグメントの右端でソートされているため、greedy algorithmで先頭から取って行けばOKです。 まず最初のセグメントをとって1とし、その次のオーバラッピングしてないセグメントを見つけたらそれをカウントします。それを繰り返します。
これで100%のスコアになります。
int solution(int A[], int B[], int N)
{
//if N <= 1, we know the answer already.
if (N <= 1){
return N;
}
int cnt = 1;
int prev_end = B[0];
int curr;
for (curr = 1; curr < N; curr++){
if (A[curr] > prev_end){
cnt++;
prev_end = B[curr];
}
}
return cnt;
}
0 件のコメント:
コメントを投稿