Как вывести 2 подходящую по условию подпоследовательность?

Еле как решил таск по нахождению наиболее длинной подпоследовательности подряд идущих элементов, которые чередуются(Если таких подпоследовательностей несколько, то вывести вторую, а ещё вывести индекс первого элемента этой подпоследовательности и длину подпоследовательности).Например для :{ 4, 6, 1, 2, 1, 2, 3, 2, 3, 5, 4, 7, 4, 1, 5, 1, 5, 6} ответ будет {2, 3, 2, 3}. Чересчур намудрил, но сделал, а возращает всё для самой первой подпоследовательности.Как исправить?

public class Task7 {
    public static void main(String[] args) {
        NumSubSequence emptySeq = null; //временная пустая последовательность
        NumSubSequence bigestSeq = new NumSubSequence(0, 0); //задаём начальный индекс и длину последовательности для будущей самой большой послед.
        int [] sequence = { 4, 6, 1, 2, 1, 2, 3, 2, 3, 5, 4, 7, 4, 1, 5, 1, 5, 6};
        try {
            for (int i = 0; i < sequence.length - 1; i++) {
                if ((sequence[i] == sequence[i + 2]) && (sequence[i] != sequence[i+1])) {
                    if (emptySeq == null) {
                        emptySeq = new NumSubSequence(i); //определяем начальный индекс для emptySeq
                    }

                    if (bigestSeq.lengthSeq < emptySeq.lengthSeq) {
                        bigestSeq = emptySeq; //присваем новую длину для последовательности
                    } else {
                        emptySeq.riseLength(); // увеличиваем длину на 1
                    }

                } else emptySeq = null;
            }
        }
        catch (ArrayIndexOutOfBoundsException a) {
            System.out.println(a);
        }
        System.out.println(bigestSeq);
    }

    static class NumSubSequence {
        int beginIndex;
        int lengthSeq = 3;

        public NumSubSequence(int NewBeginIdex) {
            beginIndex = NewBeginIdex;
        }

        public NumSubSequence(int NewBeginIdex, int NewlengthSeq) {
            beginIndex = NewBeginIdex;
            lengthSeq = NewlengthSeq;
        }

        public void riseLength() {
            lengthSeq++;

        }

        public String toString() {
            return "NumSubSequence{" +
                    "beginIndex=" + beginIndex +
                    ", lengthSeq=" + lengthSeq +
                    '}';
        }
    }

}
Вывод: NumSubSequence{beginIndex=2, lengthSeq=4}

Ответы (0 шт):