【leetcode】1041. Robot Bounded In Circle
2024-09-03 00:24:13
题目如下:
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 degress 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: "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: "GG"
Output: false
Explanation:
The robot moves north indefinetely.Example 3:
Input: "GL"
Output: true
Explanation:
The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...Note:
1 <= instructions.length <= 100
instructions[i]
is in{'G', 'L', 'R'}
解题思路:看到这个题目,我的感觉就是如果能回到起点,应该是执行instructions一次,两次或者四次。嘿嘿,当然我也不知道怎么证明,反正能AC。
代码如下:
class Solution(object):
def process(self,start,instructions):
for i in instructions:
if i == 'G':
if start[2] == 'N':start[1] += 1
elif start[2] == 'S':start[1] -= 1
elif start[2] == 'E':start[0] += 1
elif start[2] == 'W':start[0] -= 1
elif i == 'L':
if start[2] == 'N':start[2] = 'W'
elif start[2] == 'S':start[2] = 'E'
elif start[2] == 'E':start[2] = 'N'
elif start[2] == 'W':start[2] = 'S'
elif i == 'R':
if start[2] == 'N':start[2] = 'E'
elif start[2] == 'S':start[2] = 'W'
elif start[2] == 'E':start[2] = 'S'
elif start[2] == 'W':start[2] = 'N'
return start def isRobotBounded(self, instructions):
"""
:type instructions: str
:rtype: bool
"""
start = [0,0,'N']
end = self.process(start,instructions)
if end[0] == end[1] == 0:
return True
end = self.process(start, instructions)
if end[0] == end[1] == 0:
return True
end = self.process(start, instructions)
end = self.process(start, instructions)
if end[0] == end[1] == 0:
return True
return False
最新文章
- 深入学习jQuery选择器系列第一篇——基础选择器和层级选择器
- CSS魔法堂:重拾Border之——图片作边框
- Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
- oracle中scn(系统改变号)
- [BTS] SQL Adapter. New transaction cannot enlist in the specified transaction coordinator
- 针对wordpress的二次开发
- 推荐 iOS 网站:
- dedecms 的这个dede:arclist里怎么调用全局变量?
- 每天一个linux命令(25)--Linux文件属性详解
- BOM(1)
- parsing XML document from class path resource [config/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [config/applicationContext.xml] 解决方案
- kerberos环境storm配置:Running Apache Storm Securely
- 学习Axure RP原型设计
- [转]C#串口通信 SerialPort类
- 改变FileUpload文件上传控件的显示方式,确认后上传
- LINQ之let关键字
- 怎样利用Heartbeat与Floating IP在Ubuntu 14.04上创建高可用性设置
- ios开发之--调整UISearchBar的输入框的背景颜色
- python打包到pypi小结
- D. Timetable
热门文章
- 构建嵌入式Linux交叉编译工具链
- mysql慢查询解析-linux命令
- Delphi XE2 之 FireMonkey 入门(23) - 数据绑定: TBindingsList: TBindExpression
- Delphi XE2 之 FireMonkey 入门(9) - TBitmap
- 练习3-python-创造百万条数据库数据
- mysql5.7密码登录的那些坑
- PAT甲级终结——心得总结
- [2019杭电多校第六场][hdu6638]Snowy Smile(维护区间最大子段和)
- D-query SPOJ 树状数组+离线
- 持续集成工具——Jenkins