私はjavaにいくつかのコードバットチャレンジをしています。 1つの課題では、あなたがその最初の2か最後の2つの要素で指定された配列は、3forループの中に条件を追加する
例に続いて1持っている場合はtrueを返すようにしている。このように
unlucky1([1, 3, 4, 5]) → true
unlucky1([2, 1, 3, 4, 5]) → true
unlucky1([1, 1, 1]) → false
を、私は持っています以下:
for(int i=0, j=nums.length-1; i<nums.length-1; i++, j--) {
if((i<3&&nums[i]==1&&nums[i+1]==3)) {
return true;
}
else if(j>3&&nums[j]==3&&nums[j-1]==1) {
return true;
}
}
return false;
私の質問は、条件を設定する良い方法はありますか?反復変数が定数より小さいか大きいかをチェックするという考えは嫌いです。私のコードはすべてのテストを通過しますが、1つではありませんが、それは欠陥がある/汚れていると感じます。 j>3
またはi<3
のいずれかをチェックせずに最後の2つの&の最初の2つのインデックスに1が続いているかどうかを効率的にチェックするにはどうすればよいですか?
テストに合格しない場合は、次の配列を使用します。[1, 1, 1, 3, 1]
テストコードがfalseの場合、マイコードはtrueを返します。 shmoselsあたりのように編集
コメントあなたの失敗したテストのための正しい結果は何ですか?問題の説明から私には分かりませんでした。 – shmosel
申し訳ありませんが、それを指摘していただきありがとうございます。鉱山は真実を返しますが、偽でなければなりません。 – BodyBingers