Анализ времени выполнения Big O для 3-сторонней рекурсии с запоминанием - PullRequest
0 голосов
/ 30 марта 2020

Я делаю несколько вопросов на собеседовании и наткнулся на этот:

Учитывая список целых чисел, которые представляют высоты хеджирования, определите минимальное количество ходов, чтобы сделать хеджирование красивым - то есть , вычислите минимальное количество изменений, необходимых для чередования массива между увеличением и уменьшением. Например, [1,6,6,4,4] должен возвращать 2, так как вам нужно изменить вторые 6 на что-то> 6 и последние 4 на что-то <4. Предположим, что минимальная высота равна 1, а максимальная высота равна 9. Вы можете изменить любое число, которое находится в диапазоне от 1 до 9, и это считается как 1 перемещение независимо от разницы с текущим числом. </p>

Мое решение здесь: https://repl.it/@plusfuture / GrowlingOtherEquipment

Я пытаюсь выяснить время выполнения O для этого решения, которое является запомненной рекурсией. Я думаю, что это O(n^3), потому что для каждого индекса мне нужно проверить 3 возможных состояния для остальной части массива, changeUp, noChange и changeDown. Мой друг утверждает, что это O(n), так как я запоминаю большинство решений и покидаю ветки, где массив не "симпатичен" сразу.

Может кто-нибудь помочь мне понять, как анализировать среду выполнения для этого решения? Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...