找到彼此相邻的3个重复项

时间:2017-03-14 13:10:57

标签: java arrays

 int count = 0; 
    for (int i = 0; i < arr.length; i++) { 
        for (int j = 0; j < arr.length; j++) { 
         if (arr[i] == arr[j] && i != j) { 
            return false; 

         }else count++; 
      } 
    } return (count == 3); 

任务:给定一个表示数组大小的整数。使用整数填充数组,如果数组彼此相邻包含3次,则返回true。 此代码不能正常工作。鉴于真的如果发现重复2次。我需要三次,并且彼此相邻!! Some1可以帮我吗?!

3 个答案:

答案 0 :(得分:5)

关于这一点:

for (int i = 0; i < arr.length - 2; i++) { 
     if (arr[i] == arr[i + 1] && arr[i] == arr[i + 2]) { 
        return true; 
     }
}
return false;

答案 1 :(得分:1)

使用ArrayList存储匹配数字的解决方案

    int[] arryOne={1,2,3,4,4,4,5,5,5,6,6,7,7,7,8,9,9,9,19,19,19,21,21,30,45,10,10,10};
    ArrayList<Integer> arryTwo=new ArrayList<Integer>();
    for (int x=0;x<=arry.length-1;x++)
    {
        if(arryOne[x]==arryOne[x+1] && arryOne[x]==arryOne[x+2] &&  x!=arry.length-2)
        {
            arryTwo.add(arry[x]);
            x=x+2;

        }       
    }
    System.out.println("The number which is repeating three times in the array is = ");
    for (int valInArrayList: arryTwo)
    {
        System.out.print(valInArrayList + ", ");
    }

答案 2 :(得分:-1)

for(int i=0;i<arr.length-2;i++){
   if((arr[i]==arr[i+1])&& (arr[i]==arr[i+2])){
      return true;
    }
}
return false;

这样,我们只检查一次数组,这样可以提高性能。我们在这里用简单的英语做的是:&#34;检查一个数字是否等于跟随他的两个&#34;,然后我们在离开数组之前停止(这是array.length-2的用途)< / p>

Ex:对于6个数字的数组,我们将检查

[0,1,2]  
[1,2,3] 
[2,3,4]  
[3,4,5]