【Leetcode】2069. Walking Robot Simulation II
创始人
2024-03-12 10:46:39

题目地址:

https://leetcode.com/problems/walking-robot-simulation-ii/description/

给定一个w×hw\times hw×h的二维矩阵,一个机器人位于左下角(0,0)(0,0)(0,0)的位置,右上角的位置是(w−1,h−1)(w-1, h-1)(w−1,h−1)。这个机器人一开始方向向东,要求实现下面的操作:
1、以w,hw,hw,h初始化;
2、移动机器人xxx步,机器人除非走到边界之外,否则方向不变;如果走到边界之外,则走到边界的时候需要逆时针转向90°90\degree90°然后走剩余的步数;
3、返回机器人位置;
4、返回机器人朝向。

首先,机器人无论在哪儿,其走xxx步等价于走xmod[(w+h−2)∗2]x\mod [(w+h-2)*2]xmod[(w+h−2)∗2]步,所以可以先让xxx取模,取模完毕之后剩余步数暴力模拟即可。需要注意一个特殊情况,如果机器人从未走过,其朝向是东,但是一旦其走过,在其回到(0,0)(0,0)(0,0)的时候,朝向是南。其余的情况都可以直接模拟。代码如下:

class Robot {public:int X, Y, dir;string direction[4] = {"East", "North", "West", "South"};int x, y;int dx[4] = {1, 0, -1, 0};int dy[4] = {0, 1, 0, -1};bool moved = false;Robot(int width, int height) {X = width;Y = height;x = y = dir = 0;}void step(int num) {moved = true;num %= (X - 1 + Y - 1) * 2;while (num) {int nx = x + dx[dir] * num, ny = y + dy[dir] * num;if (nx < 0 || nx >= X || ny < 0 || ny >= Y) {// 出界了,要转向dir = (dir + 1) % 4;if (nx < 0) num -= x, x = 0;else if (nx >= X) num -= X - 1 - x, x = X - 1;else if (ny < 0) num -= y, y = 0;else num -= Y - 1 - y, y = Y - 1;} else {// 没出界,则(nx, ny)即为新位置x = nx, y = ny;return;}}}vector getPos() { return {x, y}; }string getDir() {// 如果走过,回到了原点,方向是南if (moved && !x && !y) return direction[3];return direction[dir];}
};

所有操作时间复杂度O(1)O(1)O(1),空间O(1)O(1)O(1)。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...