zoukankan      html  css  js  c++  java
  • 【leetcode】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 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. 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
  • 相关阅读:
    正则化--Lambda
    uwsgi配置cheaper模式进行自动弹性
    采集容器内存并写到excel
    通过进程id找到进程对应的容器并统计每个进程的内存占用写到excel里
    基于celery的任务管理
    基于Redis做内存管理
    uWSGI
    nginx
    服务发现
    绑核与巨页
  • 原文地址:https://www.cnblogs.com/seyjs/p/10853771.html
Copyright © 2011-2022 走看看