как я могу обновить количество столбцов в угловых данных с помощью рендеринга на стороне сервера. версия 6.0.0 или выше

Решение O (n) времени возможно путем объединения двух классических вопросов интервью:

  • Создание структуры данных стека (называемой MaxStack), которая поддерживает push, pop и max в O ( 1 раз. Это можно сделать, используя два стека, второй - минимальный размер.
  • Создайте очередь со стеком. Это можно сделать, используя два стека.

Для этой проблемы нам в основном нужна очередь, которая поддерживает enqueue, dequeue и max в O (1) (амортизированном) времени .

Мы комбинируем два выше, путем моделирования очереди с двумя MaxStacks.

Чтобы решить вопрос, мы выставляем в очередь элементы k, запрашиваем max, dequeue, enqueue k + 1 th элемент, запросите max и т. д. Это даст вам максимальный размер для каждого массива размера k.

Я считаю, что есть и другие решения.

1)

Я считаю, что идея очереди может быть упрощена. Мы сохраняем очередь и max для каждого k. Мы вставляем новый элемент и декауруем все элементы, которые не больше, чем новый.

2) Поддерживайте два новых массива, которые поддерживают текущий макс для каждого блока k, один массив для одного направления (слева справа / справа налево).

3) Используйте молоток: предварительный процесс в O (n) времени для максимальных запросов диапазона.

1) решение выше может быть наиболее оптимальным .

3
задан J.Langford 13 July 2018 в 11:37
поделиться