Java在数组中找到三个num

时间:2017-02-27 18:04:37

标签: java arrays find

任务:给定一个int数组,如果值3在数组中出现正好3次,则返回true,并且没有3是彼此相邻的,否则返回false。

这是我目前的代码:

 public static boolean contains(int[] arr, int item) {
  for (int n : arr) {
     if (item == n) {
        return true;
     }
  }
  return false;

4 个答案:

答案 0 :(得分:1)

您应该迭代数组并计算项目数组的次数。此外,您需要跟踪上一个项目是否是您要查找的项目。 E.g:

public static boolean contains(int[] arr, int item) {
    int count = 0;
    boolean prev = false;
    for (int n : arr) {
        if (n == item) {
            if (prev) {
                return false;
            }
            ++count;
            prev = true;
            if (count > 3) { // Optimization - could be removed
                return false;
            }
        } else {
            prev = false;
        }
    }
    return count == 3;
}

答案 1 :(得分:0)

这很简单。请查看代码中的以下修订:

osValue.call(appropriateValueForThisGoesHere);

答案 2 :(得分:0)

public static boolean contains(int[] arr, int item) {
    // Count of number of occurences
    int count=0;

    for (int i = 0; i < arr.length; i++) {
    if(arr.length-1 == i){
        if(arr[i] == item)
          count++;
     }else {
        if (arr[i] == item &&  arr[i] + 1 == item)
            return false;
        if(arr[i] == item)
            count++;
           }
        }
       return count == 3;
    }

答案 3 :(得分:-1)

public static contains(int[] arr) {
 int index = -2;
 int count = 0;
 for (int i = 0; i < arr.length; i++) {
   if (arr[i] == 3) {
    if (i-1 != index) {
      index = i;
      count++;
    } else {
      contains = false;
      break;
    }
 }

 if (count != 3) {
  contains = false;
 }
 return contains;
}