题目:

力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种:

U: 向y轴正方向移动一格
R: 向x轴正方向移动一格。
不幸的是,在 xy 平面上还有一些障碍物,他们的坐标用obstacles表示。机器人一旦碰到障碍物就会被损毁。

给定终点坐标(x, y),返回机器人能否完好地到达终点。如果能,返回true;否则返回false。

示例 1:

输入:command = "URR", obstacles = [], x = 3, y = 2
输出:true
解释:U(0, 1) -> R(1, 1) -> R(2, 1) -> U(2, 2) -> R(3, 2)。
示例 2:

输入:command = "URR", obstacles = [[2, 2]], x = 3, y = 2
输出:false
解释:机器人在到达终点前会碰到(2, 2)的障碍物。
示例 3:

输入:command = "URR", obstacles = [[4, 2]], x = 3, y = 2
输出:true
解释:到达终点后,再碰到障碍物也不影响返回结果。

代码:

方法一——超时:

import numpy as np
class Solution(object):def robot(self, command, obstacles, x, y):""":type command: str:type obstacles: List[List[int]]:type x: int:type y: int:rtype: bool"""dic={'U':np.asarray([0,1]),'R':np.asarray([1,0])}start=np.asarray([0,0])while True:for c in command:start+=dic[c]if list(start) in obstacles:return Falseif start[0]==x and start[1]==y:return Trueif start[0]>x or start[1]>y:return False

想法:每一步每一步按照它走的步数进行循环,如果当前的位置在obstacles中,那么返回False;如果当前的步数等于终点,那么返回True,如果当前的步数中的x或者y超过终点,那么返回False;

方法二——使用long数字记录x和y坐标,使用unordered_set保存起来,然后进行判断;

class Solution {
public:bool robot(string command, vector<vector<int>>& obstacles, int x, int y) {unordered_set<long> s;int xx=0,yy=0;s.insert(0);for(auto c:command){if(c=='U')yy++;else if(c=='R')xx++;s.insert(((long)xx<<30)|yy);}int circle=min(x/xx,y/yy);if(s.count(((long)(x-circle*xx)<<30)|(y-circle*yy))==0)return false;for(auto v:obstacles){if(v.size()!=2)continue;if(v[0]>x||v[1]>y)continue;circle=min(v[0]/xx,v[1]/yy);if(s.count(((long)(v[0]-circle*xx)<<30)|(v[1]-circle*yy)))return false;}return true;}
};

思路:机器人会无限循环地按照command中的指令进行移动,我们可以记录下机器人在一次循环中所经过的坐标,后续循环中到达的坐标都可以推测出来;

例如,command='RRU',则在一次循环中机器人会经过(0,0),(1,0),(2,0),(2,1)这4个点,在第二次循环中,它会经过(3,1),(4,1),(4,2)这三个点。在第三次循环中会经过(5,2),(6,2),(6,3)这三个点...

已知机器人在第一次循环中走过的所有点,和向右移动的总距离xx,和向上移动的总距离yy;给出任意一个点(m,n),如何判断这个点是否在机器人的运动轨迹中?

可以先计算出从原点到(m,n)需要走多少个循环,也就是横坐标循环的次数与纵坐标循环的次数的较小值:circle=min(m/xx,n/yy)。然后我们就可以得到点(m,n)相当于第一次循环中的哪个点,如果这个点在第一次的循环轨迹中,那么机器人一定可以到达该点,反之则不能到达;

在本题中,机器人能够完好地到达终点需要满足两个条件:

1、终点一定在机器人的运动的轨迹中(一定在第一次循环的轨迹中)

2、所有障碍物的坐标都不在机器人运动的轨迹中(一定不在第一次循环的轨迹中)

核心在于,使用long数组来存储机器人的轨迹坐标;

Leetcode之机器人大冒险相关推荐

  1. 2022-02-22:机器人大冒险。 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种

    2022-02-22:机器人大冒险. 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0).小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动.指令有两种 ...

  2. 机器人大冒险(二维数组)

    题目: 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0).小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动.指令有两种: U: 向y轴正方向移动一格 ...

  3. bulter机器人_科普!九款使用率最高的物流机器人大盘点!

    原标题:科普!九款使用率最高的物流机器人大盘点! 说起快递的速度,中国可谓是跑在全球前列,因为强大的人力资源以及完善的供应链结构,导致整个运作过程很流畅快速.但是,如果在特殊的节点,即使增加成倍的快递 ...

  4. 领域应用 | 基于知识图谱的警用安保机器人大数据分析技术研究

    本文转载自公众号:警察技术杂志. 郝久月  樊志英   汪宁   王欣   摘   要:构建大数据支撑下的智能应用是公安信息化发展的趋势,警用安保机器人大数据分析平台的核心功能包括机器人智能人机交互和 ...

  5. 曾辉机器人_武昌理工学子在2020年中国机器人大赛中夺冠

    "它在过弯的时候非常稳,而且速度快,跑完一圈的时间比第二名少十秒左右."武昌理工学院学生余辉激动地说.11月27日从武昌理工学院获悉,在刚刚结束的2020中国机器人大赛中,武昌理工 ...

  6. 机器人擂台的利剑_机器人大擂台2017

    机器人大擂台2017下载!机器人大擂台2017视频是首个机器人对战节目!机器人大擂台2017最新一集播出了,提供机器人大擂台2017,欢迎下载机器人大擂台2017! 机器人大擂台 <机器人大擂台 ...

  7. 江苏机器人竞赛南航_南航金城学院学子在第十届江苏省机器人大赛中获佳绩

    摘要: 南航金城学院学子在第十届江苏省机器人大赛中获佳绩为你介绍2020年10月25-27日,由省教育厅.省科学技术协会和江苏省自动化协会联合举办的第十届江苏省大学生机器人大赛在三江... 2020年 ...

  8. 机器人擂台的利剑_童年回忆!机器人大擂台回来了!还记得当年的利箭吗?

    原标题:童年回忆!机器人大擂台回来了!还记得当年的利箭吗? 80后,90后的朋友们,还记得小时候电视上放的一档节目吗?在一个封闭的擂台上,两个机器人肉搏,一方把另一方打报废为止,选手脑洞大开设计各种机 ...

  9. 拟真机器人拯救者奖励_《冒险岛》新版本上线,拟真机器人大逃亡一触即发!...

    经典端游<冒险岛>中的"美人梦工厂"系列一直是玩家们津津乐道的副本之一,除了它有趣的玩法和较难的操作之外,引人入胜的剧情是它成功的关键.5月13日,"美人梦工 ...

  10. 曾辉机器人_武汉大学生设计研发“机器狗” 在中国机器人大赛中夺冠

    武昌理工学院参赛代表队"晨旭队",由该校人工智能学院机器人协会的4名同学组成,分别是软工1803班余辉.计科1805班刘宗文.软工1901班李佳娆.智能1902班嵇然.队伍指导老师 ...

最新文章

  1. 【css】如何使光标移动到某个区域后改变形状
  2. 32位oracle_Oracle 之Hugepage
  3. 给定两个数r和n_输出r的n次方 java_滴滴出行2018编程题
  4. 戴尔服务器远程访问管理卡iDRAC 7详解
  5. 我的泰坦尼克数据分析
  6. 03_设置轴标签和范围、轴的标签(Labels on Axes)、定义轴的范围、使用linspace定义X值 (“linspace“ to Define X Values)
  7. vue页面无操作10分钟内调转到登录页面
  8. 《Android Property
  9. java对公项目_5个让人激动的Java项目
  10. h264 pps sps详解
  11. AQS框架之南风北巷
  12. 双系统之删除Linux
  13. ubuntu几款好用的代码编辑器
  14. LabVIEW设计程序框图
  15. 走火入魔的macfans,披着mac皮的ubuntu macbuntu安装指南
  16. JAVA自行车类代码_租借自行车RentBikeController
  17. 2022年全球市场高空作业平台总体规模、主要生产商、主要地区、产品和应用细分研究报告
  18. 计算机管理映像路径,windows任务管理器显示映像路径和命令行设置参考
  19. 做seo必须要懂得的技术:黑帽seo和白帽seo的几点
  20. 2022.07.19 MySQL唯一索引

热门文章

  1. python上方菜单栏不见了如何恢复_我的电脑”上方的工具栏不见了怎么处理?
  2. android banner停止轮播,android如何实现banner轮播图无限轮播效果
  3. HTML 内联元素之间的空隙问题
  4. 获取银行卡Log接口
  5. 6.再来一题除法算术题
  6. Selctive Search中的ABO评价方法
  7. 业务性管理(business continuity management)
  8. 无法支持计算机上的硬件,win7“不支持的硬件,你的电脑使用的处理器专为最新版win...
  9. 水哥王昱珩的教育语录:输不丢人,怕输才丢人
  10. 刘备是怎样“融资”创业的?