使用java的以下场景的最佳解决方案?

时间:2012-12-05 12:23:00

标签: java arrays algorithm

给出了整数数组。甚至数字应该在偶数索引中,奇数应该在奇数索引中。你必须检查给定的数组是否满足该条件。

我的实施就在这里......

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;
        }
    }
}

什么是最佳实施?

5 个答案:

答案 0 :(得分:4)

特定索引和该索引值的总和必须偶数,否则数组不满足您的条件:

public boolean isSatisfied(int[] arr) 
{
    for (int i = 0; i < arr.length; i++) 
    {
        if ((i + arr[i]) % 2 != 0)
            return false;
    }
    return true;
}

答案 1 :(得分: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");
}

答案 2 :(得分:1)

“最佳”通常是一种观点。你的代码足够好了,这里有一些提示:

1)不要将逻辑与演示混合。在循环中,将状态(数组是否正确)保存到布尔变量。在循环之后,根据变量打印任何你想要的东西(所以你不会重复几次“是”(并且可能跟着“不”),这会让我感到困惑。

2)如果您使用if-else-if构造,则不需要continue。使用另一种形式来提高可读性。

答案 3 :(得分:0)

让名为isX的方法返回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;
}

答案 4 :(得分:0)

这只是代码的一个小修改版本。 包com.mtk;

public class 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");
    }
}