Ну чего новенькое.
Сперва заходим с условий, узнаём дополнительные, что не сказал задающий. Всякие моменты с юзер инпут валидацией проговариваем.
Затем говорим "сперва попробуем наивный алгоритм" и начинаешь объяснять. Если кроме наивного в голове есть решение лучше - после наивного сразу говоришь "но мы знаем также, что можно..." и обязательно говоришь где и как улучшается комплексити.
Дальше заходишь с момента баланса скорости и памяти, для этого ты и узнавал как программа будет использоваться. Например, мы можем захешировать и ускорить процесс или наоборот, О1 память но квадрат скорость.