HWA_03 leetcode874模拟行走机器人
题目map方法的作用解题思路classSolution:defrobotSim(self,commands:List[int],obstacles:List[List[int]])-int:#初始化结果result0#从原点00位置开始出发x0y0#机器人前进的方向#初始方向:正北#0表示向北#1表示向东#2表示向南#3表示向西direction0#机器人是朝北的默认是0#定义四个方向dx[0,1,0,-1]dy[1,0,-1,0]# 障碍物有多个所以需要有⼀个障碍物坐标点集合# 使⽤ 集合 Set 存储障碍物的坐标⽤来检查下⼀步是否受阻# 机器⼈每试图⾛⼀个位置就⽤此位置与障碍物集合列表⾥的坐标进⾏⽐较看是否刚好是障碍物坐标点obstacleSetset(map(tuple,obstacles))#机器人开始行走forcomincommands:## -2向左转 90 度ifcom-2:#1当前方向为正北方向即direction0.向左转90度#来到向西方向即direction需要更新为3#2当前方向不是正北方向即direction 0.向左转90度# ⻄ - 南即 3 - 2# 南 - 东即 2 - 1# 东 - 北即 1 - 0# 即 direction 需要更新为 direction - 1ifdirection0:direction3else:directiondirection-1# direction (direction 0) ? 3 : direction - 1#-1向右转90度elifcom-1:# 1、当前⽅向为正⻄⽅向即 direction 3 向右转 90 度# 来到 向北 ⽅向即 direction 需要更新为 0# 2、当前⽅向【不是】正⻄⽅向即 direction 3 向右转 90 度# 北 - 东即 0 - 1# 东 - 南即 1 - 2# 南 - ⻄即 2 - 3# 即 direction 需要更新为 direction 1ifdirection3:direction0else:directiondirection1# direction (direction 3) ? 0 : direction 1# 1 x 9 向前移动 x 个单位⻓度else:# 没有遇到障碍物⼀直往前⾛ com 个单位⻓度forkinrange(com):if(xdx[direction],ydy[direction])notinobstacleSet:xdx[direction]ydy[direction]resultmax(result,x*xy*y)returnresult注意机器人有指向的(有一个特定的正面)所以#1当前方向为正北方向即direction0.向左转90度#来到向西方向即direction需要更新为3#2当前方向不是正北方向即direction 0.向左转90度# ⻄ - 南即 3 - 2# 南 - 东即 2 - 1# 东 - 北即 1 - 0# 即 direction 需要更新为 direction - 1
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2498716.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!