1

Помогите решить задачу: написать метод который возвращает true если хоть где-то в массиве идут три числа в порядке возрастания, false если нет

public static boolean threeArray(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 = 0;
            return false;
        }else
            count++;
    }
    return count >= 2;
}

Не проходит проверку:

array([1, 4, 5, 6, 2]) → true
array([1, 2, 3]) → true
array([1, 2, 4]) → false
array([1, 2, 4, 5, 7, 8]) → false
Qew
  • 17

2 Answers2

1

Это делается гораздо проще.

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

Попобуй вот так - это должно помочь

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

Суть в том, что ты должен выйти из цикла, если ты уже имеешь count==2. И еще ты должен игнорировать состояние, когда следующий элемент равен текущему.

Axenow
  • 2,132
  • 9
  • 17
  • Спасибо за помощь) – Qew Sep 29 '18 at 12:44
  • @Qew Примите ответ, если он помог и делает именно то, что вам надо. ) Ведь потом вы так же будете искать нужные вам ответы на сайте. ) – Axenow Sep 29 '18 at 12:45