完成网站建设,校园网上零售网站建设方案,广州冼村,闽清住房和城乡建设局网站目录 1.题目2.思路3.代码实现#xff08;Java#xff09; 1.题目
机器人在一个无限大小的 XY 网格平面上行走#xff0c;从点 (0, 0) 处开始出发#xff0c;面向北方。该机器人可以接收以下三种类型的命令 commands #xff1a;
-2 #xff1a;向左转 90 度-1 #xf… 目录 1.题目2.思路3.代码实现Java 1.题目
机器人在一个无限大小的 XY 网格平面上行走从点 (0, 0) 处开始出发面向北方。该机器人可以接收以下三种类型的命令 commands
-2 向左转 90 度-1 向右转 90 度1 x 9 向前移动 x 个单位长度
在网格上有一些格子被视为障碍物 obstacles 。第 i 个障碍物位于网格点 obstacles[i] (xi, yi) 。 机器人无法走到障碍物上它将会停留在障碍物的前一个网格方块上但仍然可以继续尝试进行该路线的其余部分。 返回从原点到机器人所有经过的路径点坐标为整数的最大欧式距离的平方。即如果距离为 5 则返回 25
注意 北表示 Y 方向。 东表示 X 方向。 南表示 -Y 方向。 西表示 -X 方向。
示例 1 输入commands [4,-1,3], obstacles [] 输出25 解释 机器人开始位于 (0, 0)
向北移动 4 个单位到达 (0, 4)右转向东移动 3 个单位到达 (3, 4) 距离原点最远的是 (3, 4) 距离为 32 42 25
示例 2 输入commands [4,-1,4,-2,4], obstacles [[2,4]] 输出65 解释机器人开始位于 (0, 0)
向北移动 4 个单位到达 (0, 4)右转向东移动 1 个单位然后被位于 (2, 4) 的障碍物阻挡机器人停在 (1, 4)左转向北走 4 个单位到达 (1, 8) 距离原点最远的是 (1, 8) 距离为 12 82 65
提示 1 commands.length 104 commands[i] is one of the values in the list [-2,-1,1,2,3,4,5,6,7,8,9]. 0 obstacles.length 104 -3 * 104 xi, yi 3 * 104 答案保证小于 231
2.思路
1模拟 思路参考本题官方题解。
3.代码实现Java
//思路1————模拟
class Solution {public int robotSim(int[] commands, int[][] obstacles) {int[][] dirs {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};int px 0, py 0;// d {1, 2, 3, 4} 分别表示面朝北方、东方、南方和西方int d 1;SetInteger set new HashSetInteger();for (int[] obstacle : obstacles) {set.add(obstacle[0] * 60001 obstacle[1]);}int res 0;for (int c : commands) {if (c 0) {//更新方向d (c -1 ? 1 : -1);d % 4;if (d 0) {d 4;}} else {for (int i 0; i c; i) {if (set.contains((px dirs[d][0]) * 60001 py dirs[d][1])) {//遇到障碍物break;}px dirs[d][0];py dirs[d][1];//更新 resres Math.max(res, px * px py * py);}}}return res;}
}