steps. Сначала он проходит steps[0] метров на север, потом steps[1] — на запад, steps[2] — на юг, steps[3] — на восток, затем снова на север и так далее: после каждого шага он поворачивает налево.
За роботом остаётся след из отрезков. Верните true, если след где-нибудь пересекает или касается сам себя, и false иначе.
Попробуйте решить за один проход и O(1) дополнительной памяти.steps=[3, 1, 1, 2] → True
Путь: (0, 0) → (0, 3) → (−1, 3) → (−1, 2) → (1, 2). Последний отрезок пересекает первый в точке (0, 2).
steps=[2, 2, 3, 3, 4] → False
Каждый шаг длиннее того, что был два шага назад, — путь раскручивается наружу и ни разу себя не касается.
steps=[1, 1, 1, 1] → True
Робот обходит квадрат и возвращается в (0, 0). Касание уже пройденной точки тоже считается пересечением.
steps=[3, 1, 1, 2]
True
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 116 тестов на сервере, включая скрытые.