1

整数配列が与えました。偶数は偶数インデックスに、奇数は奇数インデックスに入れる必要があります。指定された配列がその条件を満たすかどうかを確認する必要があります。

私の実装はここにあります....

public void isSatisfied(int [] arr){

    for(int i=0;i<arr.length;i++){  

        int r_val=arr[i]%2;
        int r_index=i%2;

        if((r_val==1)&&(r_index==1)){

            if(i==arr.length-1){
                System.out.println("yes");
            }
            continue;
        }
        else if((r_val==0)&&(r_index==0)){
            if(i==arr.length-1){
                System.out.println("yes");
            }
            continue;
        }
        else{
            System.out.println("no");
            break;
        }
    }
}

最良の実装は何ですか?

4

5 に答える 5

4

特定のインデックスとそのインデックスの値の合計は偶数でなければなりません。そうでない場合、配列は条件を満たしません。

public boolean isSatisfied(int[] arr) 
{
    for (int i = 0; i < arr.length; i++) 
    {
        if ((i + arr[i]) % 2 != 0)
            return false;
    }
    return true;
}
于 2012-12-05T12:32:02.923 に答える
1
public void isSatisfied(int [] arr){

    for(int i=0;i<arr.length;i++){  

        int r_val=arr[i]%2;
        int r_index=i%2;

        if(r_val!=r_index){
            System.out.println("no");
            return;
        }
    }
    System.out.println("yes");
}
于 2012-12-05T12:26:11.783 に答える
1

「最高」はしばしば意見の問題です。あなたのコードは十分です。ここにいくつかのヒントがあります:

1) ロジックとプレゼンテーションを混同しないでください。ループで、状態 (配列が正しいかどうか) をブール変数に保存します。ループの後、変数に基づいて必要なものを出力します(したがって、いくつかの「はい」が繰り返されることはありません(その後に「いいえ」が続く可能性があります))。

2)if-else-if構文を使用する場合、continues は必要ありません。読みやすさを向上させるために、別の形式を使用してください。

于 2012-12-05T12:30:19.997 に答える
0

これは、コードを少し変更しただけのバージョンです。パッケージcom.mtk;

パブリック クラス ArrayTest {

    public static void main(String[] args) {
        int[] arr = {2,3,4,5,6};        
        isSatisfied(arr);
    }

    private static void isSatisfied(int[] arr) {
        // TODO Auto-generated method stub
        for (int i = 0; i < arr.length; i++) {
            if( i%2 == 0 && arr[i]%2 == 0) ; // do nothing
            else if (i%2 == 1 && arr[i]%2 == 1) ; // do nothing
            else {
                System.out.println("No");
                return;
            }
        }
        System.out.println("Yes");
    }
}
于 2012-12-05T12:31:55.333 に答える
0

isXreturnという名前のメソッドを持つ方が理にかなっていますboolean

public boolean isSatisfied(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        if (i % 2 == 0 && arr[i] % 2 != 0)
            return false;
        if (i % 2 == 1 && arr[i] % 2 == 0)
            return false;
    }
    return true;
}
于 2012-12-05T12:30:39.210 に答える