博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】1041. Robot Bounded In Circle
阅读量:6818 次
发布时间:2019-06-26

本文共 2367 字,大约阅读时间需要 7 分钟。

题目如下:

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: trueExplanation: 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: falseExplanation: The robot moves north indefinetely.

Example 3:

Input: "GL"Output: trueExplanation: The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...

 

Note:

  1. 1 <= instructions.length <= 100
  2. 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

 

转载于:https://www.cnblogs.com/seyjs/p/10853771.html

你可能感兴趣的文章
Linux下使用pure-ftpd建立匿名ftp访问
查看>>
PhalApi:[1.11] 快速入门: 接口开发示例 源码 图文
查看>>
分享插件
查看>>
HTML 页面中Buton 按钮提交,一个很坑的问题
查看>>
kitchen测试salt-formulas
查看>>
拿Nginx 部署你的静态网页
查看>>
23种设计模式
查看>>
openstack命令整理
查看>>
使用xtrabackup备份mysql8.0.16
查看>>
安装apache遇到的几个错误及解决办法 [error] Apache2.2: Service is already installed.
查看>>
Spring Security源码分析一:Spring Security认证过程
查看>>
Dubbo环境搭建
查看>>
[数据结构]插入排序与希尔排序
查看>>
如何高效利用GitHub
查看>>
Server-sent Event 简单介绍
查看>>
nginx 常用的几个命令
查看>>
解决命令行的乱码以及编码的问题
查看>>
Linux 程序获取环境变量
查看>>
vim设置括号自动补全
查看>>
windows环境eclipse开发C++程序
查看>>