Lesson 3: Passing Carsの答えがこちらになります。
西に進んでいる車は、反対側からくる東にすすんでいる車の全てにあうことになります。
ですから、東に進んでいる車の数を数えつつ、配列を調べていき、東に進んでいる来るまであれば、「東に進んでいる車のカウンタ」を一つ増やします。
西に進んでいる車があったら、「すれ違う車のカウンタ」に、「東に進んでいる車のカウンタ」を足せばよいのです。
で、忘れ易いのが1,000,000,000以上カウントが増えたら-1を返せという仕様ですね。
codilityの環境はintの範囲内の値なので、カウンタその他はint型でいいですね。
この方針で100%がでます。
int solution(int A[], int N)
{
int cnt = 0;
int cntCarsTravelingEast = 0;
int i;
for (i = 0; i < N; i++){
if (A[i] == 0){
cntCarsTravelingEast++;
}
else {
cnt += cntCarsTravelingEast;
if (cnt > 1000000000){
return -1;
}
}
}
return cnt;
}
0 件のコメント:
コメントを投稿