Как мне проанализировать алгоритм k пустых слотов? - PullRequest
0 голосов
/ 10 марта 2019

В коде Leet существует алгоритм, который называется K Пустые слоты.Я не понимаю ограничений.Я пытался найти лучшее объяснение вопроса, но не могу найти.Это выглядит следующим образом:

Есть сад с N слотами.В каждом слоте есть цветок.N цветов будут цвести один за другим в N дней.В каждый день будет цвести только один цветок, и с тех пор он будет в состоянии цветения.

Данный массив цветов состоит из числа от 1 до N. Каждое число в массиве представляет место, гдецветок откроется в этот день.

Например, flowers [i] = x означает, что уникальный цветок, который цветет в день i, будет в положении x, где i и x будут в диапазоне от 1к N.

Также, учитывая целое число k, нужно вывести, в какой день существует два цветка в состоянии цветения, а также число цветов между ними равно k, и эти цветы не цветут.

Если такого дня нет, выведите -1. ​​

Пример 1:

Ввод:

flowers: [1,3,2]

k: 1

Вывод: 2

Объяснение: Во второй день первый и третий цветы расцвели.

Пример 2:

Ввод:

цветы: [1,2,3]

k: 1

Выход: -1

Примечание:

Данный массив будет в диапазоне [1, 20000].

Я хочу решить это сам.Я хочу знать, есть ли более простое объяснение проблемы.Я не понимаю, к входу.Я не понимаю, почему первый пример вернул 2, а второй - -1.

1 Ответ

1 голос
/ 10 марта 2019

Согласно постановке задачи:

1) Есть сад с N слотами.В каждом слоте есть цветок.N цветов будут цвести один за другим в N дней.Каждый день будет цвести только один цветок, и он будет в состоянии цветения с тех пор

В основном это говорит о том, что существует массив размера N, который является слотами вкакие цветы будут цвести по одному на каждый день.Таким образом, размер массива скажет вам количество цветов.

2) Учитывая массив цветов состоит из числа от 1 до N. Каждое число в массиве представляет место, где цветок будетоткройте в тот день.

Arr [i] скажет вам место, в котором будет расцветать цветок, а i (index) скажет вам день, в который будет расцвести цветок.в тот день.Например:

[1,3,2] здесь говорит, что

  • День 1: цветок будет расцветать в слоте 1.
  • День 2: цветок будетбудет расцветать в слоте 3.
  • День 3: цветок будет расцветать в слоте 2

3) Также, учитывая целое число k, вы должны вывести вв какой день существует два цветка в состоянии цветения, а также число цветов между ними равно k, и эти цветы не цветут.

Из этого утверждения мы понимаем, что имеемна выведите в тот день , когда в этих слотах находятся два цветущих цветка, так что слоты между ними должны быть пустыми, а количество слотов между ними равно k.Если такого слота нет, верните -1. ​​

Для первого примера.[1,3,2] здесь, как объяснено выше, в день 2 цветок будет цвести в слоте 3, а в день 1 цветок расцветал в слоте 1, поэтому количество свободных слотов в день 2 будет равно 1 (равно k)между ними.Следовательно, выходной результат - день 2.

Во втором примере мы видим, что цветы находятся в последовательных слотах, поэтому между ними нет ни одного цветочного слота, поэтому выходной сигнал равен -1.

Надеюсь, это поможет!

...