力扣团队买了一个可编程机器人,机器人初始位置在原点(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
解释:到达终点后,再碰到障碍物也不影响返回结果。

限制:

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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:def robot(self, command: str, obstacles: List[List[int]], x: int, y: int) -> bool:i = 0   # 到达的位置j = 0length = len(command)new_obs = []for ob in obstacles:if ob[0]<=x and ob[1]<=y:new_obs.append(ob)pos = []  # 第一次命令走过的路径# 先走一次commandfor s in command:if s == 'U':j += 1else:i += 1pos.append([i,j])if self.is_reach(i, j, x, y, length, pos):if len(new_obs) == 0:return Truefor ob in new_obs:if self.is_reach(i, j, ob[0], ob[1], length, pos):return Falseelse:return Truereturn Falsedef is_reach(self, i, j, x, y, length, pos):circles = ((x+y) - (i+j)) // length + 1  # 还需命令循环次数steps = ((x+y) - (i+j)) % length  # 最后一次循环的步数if steps == 0:i *= circlesj *= circlesif(i==x and j==y):return Truereturn Falsei = i*circles + pos[steps-1][0]j = j*circles + pos[steps-1][1]print(i, j)if(i==x and j==y):return Truereturn False

力扣LeetCode刷题8 机器人大冒险相关推荐

  1. Leetcode-How-What 力扣Leetcode刷题指南

    Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...

  2. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  3. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  4. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  5. 力扣(LeetCode)刷题,简单+中等题(第32期)

    目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...

  6. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

  7. 力扣(LeetCode)刷题,简单+中等题(第30期)

    目录 第1题:单词规律 第2题:找不同 第3题:在排序数组中查找元素的第一个和最后一个位置 第4题:使用最小花费爬楼梯 第5题:寻找峰值 第6题:字符串中的第一个唯一字符 第7题:两个数组的交集 II ...

  8. 力扣(LeetCode)刷题,简单+中等题(第29期)

    目录 第1题:分割数组为连续子序列 第2题:翻转矩阵后的得分 第3题:寻找旋转排序数组中的最小值 第4题:乘积最大子数组 第5题:不同路径 第6题:判断路径是否相交 第7题:摆动序列 第8题:单调递增 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第28期)

    目录 第1题:翻转单词顺序 第2题:顺时针打印矩阵 第3题:总持续时间可被 60 整除的歌曲 第4题:字符串的最大公因子 第5题:上升下降字符串 第6题:将数组分成和相等的三个部分 第7题:可被 5 ...

  10. 力扣(LeetCode)刷题,简单题(第27期)

    目录 第1题:独一无二的出现次数 第2题:速算机器人 第3题:岛屿的周长 第4题:按照频率将数组升序排序 第5题:根据数字二进制下 1 的数目排序 第6题:能否连接形成数组 第7题:强整数 第8题:查 ...

最新文章

  1. Unity C#笔记 协程详解(转)
  2. android ndk 9,Android NDK:警告:APP_PLATFORM android-9大于android:minSdkVersion 8
  3. 面试题59 - I. 滑动窗口的最大值/239. 滑动窗口最大值
  4. 为什么我使用Java
  5. python的库有哪些餐厅_Python告诉你上海有哪些高性价比的西餐厅
  6. makefile 生成.o_要学好 C 语言 / C++ ,Makefile 可少不了
  7. Spring Quartz 框架结构概述(一)[转]
  8. 惠普z800工作站bios设置_HP工作站BIOS说明书适用Z228Z440Z230Z640Z840Z800Z620Z420Z820主板设置.doc...
  9. Eclipse使用基础教程
  10. 在VirtualBox Linux 7u2 中安装Oracle RAC 12.2.0.1.0
  11. 关于lcm,gcd的一些性质
  12. java兔子繁殖总数_Java 兔子繁殖迭代问题
  13. 性能测试模型初探及应用方法分析
  14. 数据分享|人口空间分布
  15. 1.可编程并行接口实验
  16. postgres9.5.7 wal日志归档和任意时间点恢复数据
  17. pcb板制作过程中遇到的问题
  18. Spark RDD JOIN 调优
  19. 线程局部变量 ThreadLocal
  20. android textview 复制粘贴,android app 内 实现文本复制粘贴功能

热门文章

  1. xpwifi热点设置android,笔记本xp系统wifi热点设置教程(图文)
  2. 分享:Android清除本地数据缓存代码
  3. 小白快速学习 Kotlin 语法基础
  4. 中级软件设计师刷题笔记
  5. 七甲川荧光染料IR820 NHS ester,新吲哚菁绿-活化酯,New Indocyanine Green-nhs ester
  6. 《关于长沙.NET技术社区未来发展规划》问卷调查结果公布
  7. Android项目接入魔窗SDK自定义使用
  8. PiliPala Player-a simple media player
  9. NetCore利用CsvHelper解析支付宝对账单
  10. Web开发——Photoshop(PSD格式截取)