LeetCode 1041. 困于环中的机器人
题目描述
思路分析
解法一:模拟一轮指令(推荐)
核心思路:
- 机器人初始朝北,执行一轮指令后:
- 若回到原点,则必在环内。
- 若朝向发生改变,则多次重复后也会回到原点。
- 仅当位置未回到原点且方向仍朝北时不在环内。
复杂度分析:
- 时间复杂度:O(n),其中 n 表示指令长度。
- 空间复杂度:O(1),仅使用常数额外空间。
class Solution {
public boolean isRobotBounded(String instructions) {
int x = 0;
int y = 0;
int dir = 0;
int[][] dirs = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
for (int i = 0; i < instructions.length(); i++) {
char c = instructions.charAt(i);
if (c == 'G') {
x += dirs[dir][0];
y += dirs[dir][1];
} else if (c == 'L') {
dir = (dir + 3) % 4;
} else {
dir = (dir + 1) % 4;
}
}
return (x == 0 && y == 0) || dir != 0;
}
}
func isRobotBounded(instructions string) bool {
x, y := 0, 0
dir := 0
dirs := [][]int{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}
for i := 0; i < len(instructions); i++ {
c := instructions[i]
if c == 'G' {
x += dirs[dir][0]
y += dirs[dir][1]
} else if c == 'L' {
dir = (dir + 3) % 4
} else {
dir = (dir + 1) % 4
}
}
return (x == 0 && y == 0) || dir != 0
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 1041. 困于环中的机器人 | 中等 | 模拟 |
| 874. 模拟行走机器人 | 中等 | 模拟 |
| 657. 机器人能否返回原点 | 简单 | 模拟 |
| 136. 只出现一次的数字 | 简单 | 模拟、状态 |
| 54. 螺旋矩阵 | 中等 | 模拟 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!