На бесконечной плоскости робот изначально стоит в точке (0, 0)
и смотрит на север. Робот может получить одну из трех инструкций:
"G"
: идите прямо 1 единицу;"L"
: повернуть на 90 градусов влево;"R"
: повернуть на 90 градусов вправо.
Робот выполняет instructions
по порядку и повторяет их вечно.
Вернуть true
тогда и только тогда, когда на плоскости существует круг, из которого робот никогда не выходит.
Пример 1:
Input: instructions = "GGLLGG" Output: true Explanation: The robot moves from (0,0) to (0,2), turns 180 degrees, and then returns to (0,0). When repeating these instructions, the robot remains in the circle of radius 2 centered at the origin.
Пример 2:
Input: instructions = "GG" Output: false Explanation: The robot moves north indefinitely.
Пример 3:
Input: instructions = "GL" Output: true Explanation: The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...
Ограничения:
1 <= instructions.length <= 100
instructions[i]
is'G'
,'L'
or,'R'
.
Решение:
Если мы в одной точке, то можем сделать круг.
Мы не можем сделать круг, если мы все еще смотрим на северную сторону, а не в начало координат, иначе во всех случаях мы можем сделать круг.
Поэтому следите за стороной и расстоянием (по вертикали и горизонтали), хотя вы можете использовать только одну переменную вместо вертикальной и горизонтальной по отдельности, потому что мы просто проверяем, находится ли она в том же положении или нет и обращена ли она к северной стороне.
Заключение:
Это проблема от 09 января 2022 г. — проблема дня на Leetcode, если вы хотите больше, пожалуйста, следите за обновлениями.
Прокомментируйте свои ценные мысли или любые предложения по модификации решения.