Определить длину подмассива

Определить длину подмассива


Необходимо определить максимальную длину подмассива у которого все элементы возрастают: X(i) < X(i+1)

Объявил две переменные, одна содержит максимальную длину, другая хранит длину длин. Пробежался по массиву и записал в count значение. Если максимальное значение меньше count, то записал в максимальное значение count. В итоге будут посчитаны все возрастающие последовательности даже если они идут с прерыванием, но как посчитать именно подмассивы?

int max = 1;
int count = 1;

for (int i = 0; i < array.length - 1; i++) {
    if (array[i] < array[i + 1])
        count++;
}

if (max < count)
    max = count;
count = 1;

System.out.print(max + " ");


Почти правильно написали, только последние строки должны быть в блоке else. Т.е. пока последовательность возрастает - увеличиваем счетчик. Как только перестала возрастать (конец возрастающей последовательности/подмассива) - проверяем на максимум и запоминаем если надо, а счетчик сбрасываем в начальное значение.

И сравнение после цикла - на случай если массив завершится на увеличивающейся последовательности, то сравнение с max в цикле не сработает.

int max = 1;
int count = 1;

for (int i = 0; i < array.length - 1; i++) {
    if(array[i] < array[i+1])
        count++;
    else{
        if (max < count)
            max = count;
        count = 1;
    }
}
if (max < count)
    max = count;


Report Page