首页 > 其他分享 >1041. 困于环中的机器人

1041. 困于环中的机器人

时间:2023-04-11 20:44:31浏览次数:43  
标签:1041 复杂度 机器人 环中 direct cnt 困于 mov

题目链接:1041. 困于环中的机器人

方法:模拟

解题思路

模拟机器人的行动过程,若再重复四轮之后仍没有回到起始状态,则机器人可以离开,否则不能离开。

代码

class Solution {
public:
    bool isRobotBounded(string instructions) {
        int mov[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
        int x = 0, y = 0, cnt = 0, direct = 0; // 0-北,1-东,2-南,3-西
        while (cnt < 4) {
            for (auto &c : instructions) {
                if (c == 'L') direct = (direct + 3) % 4;
                else if (c == 'R') direct = (direct + 1) % 4;
                else {
                    x += mov[direct][0];
                    y += mov[direct][1];
                }
            }
            if (x == 0 && y == 0 && direct == 0) return true;
            cnt ++ ;
        }
        return false;
    }
};

复杂度分析

时间复杂度:\(O(n)\);
空间复杂度:\(O(1)\)。

标签:1041,复杂度,机器人,环中,direct,cnt,困于,mov
From: https://www.cnblogs.com/lxycoding/p/17307627.html

相关文章

  • 困于环中的机器人
    在无限的平面上,机器人最初位于(0,0)处,面朝北方。注意:-北方向是y轴的正方向。-南方向是y轴的负方向。-东方向是x轴的正方向。-西方向是x轴的负方向。机器人可以接受下列三条指令之一:-"G":直走1个单位-"L":左转90度-"R":右转90度机器人按顺序执行指令......
  • LightOJ - 1041 Road Construction(最小生成树)
    题目大意:给你N条边,看能否形成最小生成树,如果存在,输出值,不存在,另外输出解题思路:模版题#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<string>#include<iostream>usingnamespacestd;constintMAXNOD......
  • 红星美凯龙的第三个十八年,车建新困于房地产
    文|螳螂观察作者|青月美国学者库兹涅兹、Wenzlick、Hoyt和英国学者哈里森基本都从本国房地产历史数据中发现了18年左右的周期性规律,周期性表现为:起步—繁荣—泡沫—衰退拆解家居连锁企业红星美凯龙的发展轨迹后,竟然可以发现,其与英美的房地产周期性规律有一些相似之处。1982年,年仅1......
  • PAT Basic 1041. 考试座位号
    PATBasic1041.考试座位号1.题目描述:每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座......
  • continue在for循环中的作用范围
    1、continue在for循环里我们熟知的作用是,跳出现在的运算,然后进入循环。但是跳出的是哪里的运算呢?(我们看代码)#include<stdio.h>//求1——100的奇数和intmain(){inti;......
  • for 循环中使用 updater 的注意事项
    例如,我想让三个圆及其圆心绕着原点旋转,其中圆通过updater移动到圆心上:mobs=VGroup()foriinrange(3):dot=Dot()distance=0.5+np.random.random()......
  • 关于如何解决循环中重复触发else
    关于如何解决循环中重复触发else 在学习中遇到了一种问题,就是有些需要循环条件+if条件完成的方法(如登录判断等)。例子://登录方法当时想法很简单,判断:如果账号和密码都......
  • for循环中list add的是同一个对象,new 对象要在里面创建
    for循环中listadd对象,最后发现是同一个。错误代码:publicstaticvoidmain(String[]args){int[]arrs={1,2,3,4};Stringstring=null;ArrayList<String>st......
  • kali 密钥存储在过时的 trusted.gpg 密钥环中(/etc/apt/trusted.gpg)的问题
    在使用apt-getupdate时会出现kali密钥存储在过时的trusted.gpg密钥环中(/etc/apt/trusted.gpg)的问题。此时我们应该更新一下key**root@Sec:~#wget-q-O- https://ar......
  • 关于for循环中remove方法使用问题
    //直接forEachList<String>k=newArrayList<>();k.add("1");k.add("2");k.add("3");k.add("4");for(Stringd:k){k.remove(d);}//for循环List<String>k=......