leetcode LCP 03. 机器人大冒险 -java

解题思路

首先先计算出一轮指令向右和向上的步长,后面的每一个循环完成都是移动相同的步长,用于统计障碍物和目标所在的区间。
然后循环每一个障碍物,判断是否可达。
最后判断终点是否可达
时间复杂度 O(m * n) m 为指令的长度,n为障碍物长度
空间复杂度 O(1) 只保存了步长;

// An highlighted block
class Solution {public boolean robot(String command, int[][] obstacles, int x, int y) {int up = 0;//向上的步长int right = 0;//向右的步长//计算一轮指令的向上和向右的步长for (int i = 0; i < command.length(); i ++) {if (command.charAt(i) == 'U') {up ++;} else {right ++;}}//计算每一个在范围的障碍物是否可达for (int i = 0; i < obstacles.length; i ++) {//如果障碍物超出范围,则跳过if (obstacles[i][0] > x || obstacles[i][1] > y) {continue;}//cycle为判断障碍物走过了多少次循环,取横坐标和纵坐标除以相应步长的最小值。int cycle =  Math.min(obstacles[i][0] / right, obstacles[i][1] / up);//减去走过的步长,剩下的则为此次循环应走的步长。int targetX = obstacles[i][0] - cycle * right;int targetY = obstacles[i][1] - cycle * up;//执行指令,判断障碍物是否可达for (int j = 0; j < command.length() && (targetX > 0 || targetY > 0); j ++) {if (command.charAt(j) == 'U') {targetY --;} else {targetX --;}}//如果障碍物可达,则为终点不可达,直接返回if (targetX == 0 && targetY == 0) {return false;}}//跟障碍物同理,判断终点是否可达int cycle =  Math.min(x / right, y / up);x = x - cycle * right;y = y - cycle * up;for (int i = 0; i < command.length() && (y > 0 || x > 0); i ++) {if (command.charAt(i) == 'U') {y --;} else {x --;}}if (x == 0 && y == 0) {return true;}return false;}
}

leetcode LCP 03. 机器人大冒险 -java相关推荐

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

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

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

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

  3. LeetCode——LCP 29. 乐团站位[简单]——分析及代码(Java)

    LeetCode--LCP 29. 乐团站位[简单]--分析及代码[Java] 一.题目 二.分析及代码 1. 直接计算 (1)思路 (2)代码 (3)结果 三.其他 一.题目 某乐团的演出场地可视作 ...

  4. 【剑指offer】【leetcode精选题集】【Java】剑指offer题解合集 更新中

    Leetcode题集 [剑指offer][JAVA]面试题第[03]题[数组中的重复数字][HashSet] [剑指offer][JAVA]面试题第[04]题[二维数中的查找][数组] [剑指offe ...

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

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

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

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

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

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

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

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

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

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

  10. Visualvm监控远程机器上的Java程序

    JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程. ...

最新文章

  1. python可以做什么 知乎-python能做什么知乎
  2. JS正则表达式的基础用法
  3. 解决ubuntu18.04中python兼容以及pip兼容问题
  4. iptables oracle策略,利用iptables防火墙保护Oracle数据库
  5. 德国高级码农可赚年薪20万,但他们不在乎钱
  6. 微博:将对“宣扬仇恨”行为进行界定,并开展专项整顿
  7. 转移纸缺陷在线检测系统
  8. 用viewpager实现图片轮播
  9. IEC 62368认证测试项目
  10. Mentor.Graphics.DesignAnalyst 2005.1 1CD
  11. 打通Linux脉络系列:进程、线程和调度-宋宝华-专题视频课程
  12. 清华大学计算机系96级 那些缔造中国互联网的男孩们
  13. 发布uubox.net客户端工具及其源代码
  14. 【生信分析】Analyzing RNA-seq data with DESeq2:输入数据和差异表达分析
  15. Fault tolerant heap shim applied to current process. This is usually due to previous crashes
  16. iOS MVVM + RxSwift 关键词zip 的调用时机问题
  17. 摄像机标定以及镜头畸变
  18. 【考研英语语法】语篇标记
  19. 2017年第4届中国西部门窗博览会会刊(参展商名录)
  20. 硬盘对拷怎么操作?这个方法更简单!

热门文章

  1. QTableWidget获取一行数据
  2. 蚁群优化算法之精华蚂蚁系统和排列蚂蚁系统学习笔记
  3. 【新书速递】Unity AR/VR 开发必知必会
  4. 齐齐哈尔计算机科学与技术学院,齐齐哈尔职工大学官网
  5. 蚂蚁安全键盘空白或应该显示安全键盘却显示的系统键盘的问题(iOS中时间佛历如何转换为公历)
  6. 车辆网相关政策和法律法规
  7. java delphi socket_Delphi跨平台Socket通讯库
  8. 如何让必应bing收录我的网站
  9. 显示图片的html 页面,HTML基础——网站图片显示页面
  10. ArcGIS 10安装方法(对比流行的2种安装方法)||迅雷电驴下载地址