数组中连续有三个数字

时间:2018-09-29 09:12:33

标签: java arrays

如果数组中至少某处连续三个数字升序,如何返回true,否则返回false

public static boolean tripleUp(int[] array) {
    int count = 0;
    for (int i = 0; i < array.length - 1; i++) {
        if(array[i] < array[i + 1] && array[i + 1] == array[i] + 1){
            count++;
            if(count < 2){
                return false;
            }
        }
    }
    return true;
}

tripleUp([1, 4, 5, 6, 2]) → true
tripleUp([1, 2, 3]) → true
tripleUp([1, 2, 4]) → false

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

非常简单

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

答案 1 :(得分:0)

怎么样?

static boolean inSeq(int[] arr, int n)
{
  if(arr == null || arr.length < n) return false;

  if(n <= 1) return true;

  for(int i=1, j=0; i <= arr.length; i++)
  {
    if(i == arr.length || arr[i] == arr[i-1]+1)
    {
      if(i - j == n) return true;
    }
    else
    {
      j = i;
    }
  }
  return false;
}

测试:

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

  for(int[] test : tests)
    System.out.printf("%s : %b\n", Arrays.toString(test), inSeq(test, 3));
}

输出:

[1, 4, 5, 6, 2] : true
[1, 2, 3] : true
[1, 2, 4] : false