2020-11-20

机器人大冒险

机器人初始位置在原点(0, 0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种:

U: 向y轴正方向移动一格
R: 向x轴正方向移动一格。
不幸的是,在 xy 平面上还有一些障碍物,他们的坐标用obstacles表示。机器人一旦碰到障碍物就会被损毁。

给定终点坐标(x, y),返回机器人能否完好地到达终点。如果能,返回true;否则返回false。

输入:command = "URR", obstacles = [], x = 3, y = 2输出:true解释:U(0, 1) -> R(1, 1) -> R(2, 1) -> U(2, 2) -> R(3, 2)。
输入:command = "URR", obstacles = [[2, 2]], x = 3, y = 2输出:false解释:机器人在到达终点前会碰到(2, 2)的障碍物。
输入:command = "URR", obstacles = [[4, 2]], x = 3, y = 2输出:true解释:到达终点后,再碰到障碍物也不影响返回结果。
class Solution { public boolean robot(String command, int[][] obstacles, int x, int y) {  char[] c = command.toCharArray();  int xSteps = 0;  int ySteps = 0;  int[][] path = new int[c.length][2];  for (int i = 0; i < c.length; i++) {   switch (c[i]) {    case 'U':     ySteps++;     break;    case 'R':     xSteps++;     break;   }   path[i][0] = xSteps;   path[i][1] = ySteps;  }  for (int[] o : obstacles) {   if (o[0] >= x && o[1] >= y) {    continue;   }   if (check(path, o[0], o[1], xSteps, ySteps)) {    return false;   }  }  return check(path, x, y, xSteps, ySteps); } private static boolean check(int[][] path, int xo, int yo, int xSteps, int ySteps) {  for (int[] p : path) {   if (((xo - p[0]) % xSteps == 0 && (yo - p[1]) % ySteps == 0) && ((xo - p[0]) / xSteps == (yo - p[1]) / ySteps)) {    return true;   }   }  return false; }}

原文转载:http://www.shaoqun.com/a/490614.html

跨国采购网:https://www.ikjzd.com/w/2270.html

海鹰数据:https://www.ikjzd.com/w/2539

夸克:https://www.ikjzd.com/w/1237


机器人初始位置在原点(0,0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种:U:向y轴正方向移动一格R:向x轴正方向移动一格。不幸的是,在xy平面上还有一些障碍物,他们的坐标用obstacles表示。机器人一旦碰到障碍物就会被损毁。给定终点坐标(x,y),返回机器人能否完好地到达终点。如果能,返回true;否则返回false。输入:comma
net-a-porter:net-a-porter
bsci 认证:bsci 认证
海南岛旅游注意事项?:海南岛旅游注意事项?
上林霞客古渡葵园门票多少钱?霞客古渡葵花什么时候开?:上林霞客古渡葵园门票多少钱?霞客古渡葵花什么时候开?
宝藏市场墨西哥,你确定不了解一下?:宝藏市场墨西哥,你确定不了解一下?

No comments:

Post a Comment