1041. Robot Bounded In Circle 機器人在圈圈裏面?
1041. Robot Bounded In Circle 機器人在圈圈裏面?
On an infinite plane, a robot initially stands at (0, 0) and faces north. The robot can receive one of three instructions:
"G": go straight 1 unit;"L": turn 90 degrees to the left;"R": turn 90 degrees to the right.
The robot performs the instructions given in order, and repeats them forever.
Return true if and only if there exists a circle in the plane such that the robot never leaves the circle.
Example 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.
Example 2:
Input: instructions = "GG" Output: false Explanation: The robot moves north indefinitely.
Example 3:
Input: instructions = "GL" Output: true Explanation: The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...
Constraints:
1 <= instructions.length <= 100instructions[i]is'G','L'or,'R'.
Leetcode有很多機器人走路問題
起手式 要記住 左轉 右轉的寫法
機器人有四個state 位置 兩個,方向兩個,(x,y) 和 (dx,dy)
如果走回原點,則會固定。
這題最困難的事情是 如果最後走的方向是向北,那就會一路向北走 否則就一定會bound
證明不是很簡單
大家可以想一下:
class Solution: def isRobotBounded(self, instructions: str) -> bool: dirx, diry=0,1 x,y=0,0 for d in instructions: if d== "G": x,y=x+dirx, y+diry elif d=="L": dirx, diry=-1*diry, dirx else: dirx, diry=diry, -dirx return (x,y)==(0,0) or (dirx, diry)!=(0,1)
留言
張貼留言