将一个元素与九个数组区分开来,其中8个元素具有相同的值,1个具有不同的值?

时间:2015-03-08 18:46:33

标签: java c++

我有一个包含9个元素的数组,其中8个元素具有相同的值,1个具有不同的值。问题是你只有两个if语句吗?

int main(){
int array[9];
for(int x=0;x<9;x++)
{
cin>>array[x];
}
if(){}
if(){}
cout<<"The number which is different is at ? position"
}

1 个答案:

答案 0 :(得分:2)

int[] myArray = new int[]{1, 1, 2, 1, 1, 1, 1, 1, 1};
Arrays.sort(myArray);
int indexOfdifferentValue = -1;
if(myArray[0] == myArray[1]){
indexOfdifferentValue = myArray.length - 1;
}else{
indexOfdifferentValue = 0;
}
int result = myArray[indexOfdifferentValue];

看看是否有效。

好的,也许这是一个肮脏的解决方案。它不是一般解决方案,它只是为了解决您的情况。检查这是否适合您。

public static void main(String[] args) {

    int position = 0;

    int[] array = new int[]{1, 1, 1, 
                            1, 2, 1, 
                            1, 1, 1};

//      for(int x=0; x<9; x++){
//          cin>>array[x];
//      }

    if((array[position] == array[++position]) 
            && (array[++position] == array[++position])
            && (array[++position] == array[++position])
            && (array[++position] == array[++position])){

        position = position + 1;
    }


    if(position != (array.length - 1) && array[position] == array[position + 1]){
        position = position - 1;
    }

    System.out.println("The number which is different is at ? position: " + (position + 1) + ", index: " + position + ", value: " + array[position]);

}