LeetCode LCP 03. 机器人大冒险(前缀和)
题意:
力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0)。
小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种:U: 向y轴正方向移动一格
R: 向x轴正方向移动一格。
不幸的是,在 xy 平面上还有一些障碍物,他们的坐标用obstacles表示。机器人一旦碰到障碍物就会被损毁。给定终点坐标(x, y),返回机器人能否完好地到达终点。如果能,返回true;否则返回false。数据范围:
2 <= command的长度 <= 1000
command由U,R构成,且至少有一个U,至少有一个R
0 <= x <= 1e9, 0 <= y <= 1e9
0 <= obstacles的长度 <= 1000
obstacles[i]不为原点或者终点来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/programmable-robot
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法:
设su[i]为移动序列前i步'U'的数量,sr[i]为移动序列前i步'R'的数量.设移动序列的长度为n,
如果机器人能够到达(x,y),
那么一定有su[n]*k+su[i]=x且su[n]*k+sr[i]=y,
其中k是满足su[n]*k<=x&&su[n]*k<=y的最大值,k可以O(1)计算,然后O(n)从[0,n]枚举i,
判断su[n]*k+su[i]=x且su[n]*k+sr[i]=y是否满足即可判断能否到达(x,y).对于这题,就是判断起点能否到达终点(x,y),
且不能到达(0,0)到(x,y)矩形中的任何障碍点.
code:
class Solution {public:static const int maxm=1e3+5;int su[maxm],sr[maxm];int n;bool check(int x,int y){int k=min(x/sr[n],y/su[n]);int xx=x-k*sr[n],yy=y-k*su[n];for(int i=0;i<=n;i++){if(sr[i]==xx&&su[i]==yy){return 1;} }return 0;}bool robot(string s, vector<vector<int>>& o, int x, int y) {memset(su,0,sizeof su);memset(sr,0,sizeof sr);n=s.size();s='p'+s;for(int i=1;i<=n;i++){su[i]=su[i-1]+(s[i]=='U');sr[i]=sr[i-1]+(s[i]=='R');}for(auto i:o){if(i[0]>x||i[1]>y)continue;//注意特判这个if(check(i[0],i[1])){return 0;}}if(check(x,y)){return 1;}return 0;}
};
LeetCode LCP 03. 机器人大冒险(前缀和)相关推荐
- 2022-02-22:机器人大冒险。 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种
2022-02-22:机器人大冒险. 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0).小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动.指令有两种 ...
- 机器人大冒险(二维数组)
题目: 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0).小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动.指令有两种: U: 向y轴正方向移动一格 ...
- bulter机器人_科普!九款使用率最高的物流机器人大盘点!
原标题:科普!九款使用率最高的物流机器人大盘点! 说起快递的速度,中国可谓是跑在全球前列,因为强大的人力资源以及完善的供应链结构,导致整个运作过程很流畅快速.但是,如果在特殊的节点,即使增加成倍的快递 ...
- 领域应用 | 基于知识图谱的警用安保机器人大数据分析技术研究
本文转载自公众号:警察技术杂志. 郝久月 樊志英 汪宁 王欣 摘 要:构建大数据支撑下的智能应用是公安信息化发展的趋势,警用安保机器人大数据分析平台的核心功能包括机器人智能人机交互和 ...
- 曾辉机器人_武昌理工学子在2020年中国机器人大赛中夺冠
"它在过弯的时候非常稳,而且速度快,跑完一圈的时间比第二名少十秒左右."武昌理工学院学生余辉激动地说.11月27日从武昌理工学院获悉,在刚刚结束的2020中国机器人大赛中,武昌理工 ...
- Leetcode刷题-最长公共前缀
Leetcode刷题-最长公共前缀 简介 题目 个人答案及结果 学习一下官方的 简介 最近尝试下大家口口相传的神器 leetcode-cn.com,大家自己注册就可以选择题库进行使用了.我都会先自己出 ...
- Leetcode 208、实现Trie(前缀树)
Leetcode 208.实现Trie(前缀树) 使用数组实现前缀树 insert() 向前缀树里面插入字符串 遍历当前要插入的字符串,查看当前数组对应的位置是否为空 如果为空,temp[curr] ...
- 机器人擂台的利剑_机器人大擂台2017
机器人大擂台2017下载!机器人大擂台2017视频是首个机器人对战节目!机器人大擂台2017最新一集播出了,提供机器人大擂台2017,欢迎下载机器人大擂台2017! 机器人大擂台 <机器人大擂台 ...
- 江苏机器人竞赛南航_南航金城学院学子在第十届江苏省机器人大赛中获佳绩
摘要: 南航金城学院学子在第十届江苏省机器人大赛中获佳绩为你介绍2020年10月25-27日,由省教育厅.省科学技术协会和江苏省自动化协会联合举办的第十届江苏省大学生机器人大赛在三江... 2020年 ...
- 机器人擂台的利剑_童年回忆!机器人大擂台回来了!还记得当年的利箭吗?
原标题:童年回忆!机器人大擂台回来了!还记得当年的利箭吗? 80后,90后的朋友们,还记得小时候电视上放的一档节目吗?在一个封闭的擂台上,两个机器人肉搏,一方把另一方打报废为止,选手脑洞大开设计各种机 ...
最新文章
- Linux下修改mysql默认最大连接数,查看当前设置的最大连接数
- linux 查找_如何在 Linux 上查找和删除损坏的符号链接 | Linux 中国
- api服务器开发语言,【API编写】介绍一个国内强大的API接口文档写作网站showdoc - 最好的编程语言 - 博客园...
- NET问答: 为什么 String.IndexOf 在 .net5 和 netcore3 中返回值不一样?
- python多个dataframe_python对分组在多个列上的dataframe进行条件和运算
- 直接插入排序中的监视哨问题
- 关闭绿联硬盘盒子自动休眠的方法!
- iOS中 语音识别功能/语音转文字教程详解
- Python Scrapy 爬取 前程无忧招聘网
- SmartCash会止步于替代葡萄牙及瑞士境内的西联汇款和TransferWise服务吗?
- 可在线听歌却不能下载,破解后可下载有限制的音乐作品
- c++三国杀【免费复制】——转载
- C语言设计程序(第二版)
- SCI、EI论文检索,引用格式
- 微信SEO优化搜索排名如何做
- IDEA中使用JUnit5(单元测试框架)
- 30、二维装箱(单品)
- 山东大学2019计算机考研分数线,2019考研山东大学复试分数线已公布
- 第二次Rosetta stone学习总结
- Actix Websockets with Protobuf