调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

一只蚂蚁坐在由白色和黑色方格构成的无限网格上。开始时,网格全白,蚂蚁面向右侧。每行走一步,蚂蚁执行以下操作。

(1) 如果在白色方格上,则翻转方格的颜色,向右(顺时针)转 90 度,并向前移动一个单位。
(2) 如果在黑色方格上,则翻转方格的颜色,向左(逆时针方向)转 90 度,并向前移动一个单位。

编写程序来模拟蚂蚁执行的前 K 个动作,并返回最终的网格。

网格由数组表示,每个元素是一个字符串,代表网格中的一行,黑色方格由 'X' 表示,白色方格由 '_' 表示,蚂蚁所在的位置由 'L', 'U', 'R', 'D' 表示,分别表示蚂蚁 左、上、右、下 的朝向。只需要返回能够包含蚂蚁走过的所有方格的最小矩形。

示例 1:

输入:0
输出:["R"]

示例 2:

输入:2
输出:
[
  "_X",
  "LX"
]

示例 3:

输入:5
输出:
[
  "_U",
  "X_",
  "XX"
]

说明:

  • K <= 100000
通过次数
5.8K
提交次数
10K
通过率
57.6%


相关企业

提示 1
棘手的是处理无限网格。你有什么选择?

提示 2
选项1:你真的需要一个无线的网络吗?再次审题。你知道网格的最大尺寸吗?

提示 3
选项 2:想想ArrayList的工作原理。它能派上用场吗?

提示 4
选项2:使用ArrayList是不可能的,因为那样太烦琐了。也许构建自己的列表会更容易,但要专门针对矩阵。

提示 5
方法2:一种方法是当蚂蚁到达边缘时,将数组的大小加倍。但是,你将如何处理蚂蚁到达负坐标的问题呢?数组不能有负的索引。

提示 6
选项2:注意,问题中没有规定坐标的标签必须保持不变。你能把蚂蚁和所有的单元格信息移动到正坐标吗?换句话说,如果当你需要让数组n向负方向增长时,你重新标记了所有的指标使它们仍然是正的,会发生什么?

提示 7
选项3:另一件需要考虑的事情是,你是否真的需要一个网格来实现它。在这个问题中你真正需要什么信息?

提示 8
选项3:你实际上需要的是来查看一个单元格是白色的还是黑色的某种方式(当然还有蚂蚁的位置)。你能把所有的白色方格存在一个链表中吗?

提示 9
选项3:你可以考虑维护一个所有白色方格的散列集合。不过,你怎么才能打印出整个网格呢?

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
运行和提交代码需要登录
K =
0
Source