Как я могу найти самый длинный подмассив с максимальной разницей 0 и 1 с временем O(n) и пробелом O(1)

Как я могу найти самый длинный вложенный массив с максимальной разницей 0 и 1 с временной сложностью O(n) и пространством O(1)? Заранее спасибо за отзывы и решения!

Например: входной массив равен {3, 3, 4, 5, 5, 5, 6, 6, 7, 7, 7, 7, 7} и вывод должен быть примерно таким: начальный индекс равен 6 с длиной 7.

Другой пример: входной массив {5, 5, 5, 5, 3, 3, 2, 2, 1} и выход: индекс 0 и длина 4.

Возможное решение: я использую вложенные циклы для var i и var j

1 ответ

Вы не имеете права копировать это и использовать его для своего задания, но оно должно дать вам представление о том, как это сделать.

class Find {
    public static void main(String args[]) {
        int parent[][] = {
            {1,2,3,4},
            {8,7,6,5,8},
            {9,8},
            {8,7,6,5,8,0,0,0,9,9,9},
            {8}
        };

        int max = parent[0].length;
        int i = 0;//CONSTANT SPACE O(1)
        //LINEAR TIME O(n)
        for (int j = 1; j < parent.length; j++) {
            if (parent[j].length > max) {
                max = parent[j].length;
                i = j;
            }
        }

        System.out.println("Longest sub-array index: " + i);
    }
}

Я могу накормить тебя на сегодня, но ты должен изучить этот материал и накормить себя на всю жизнь...

Другие вопросы по тегам