目标
给你两个整数 m 和 n,分别表示网格的行数和列数。
请你构造 任意 一个只包含字符 '.' 和 '#' 的 m x n 网格,其中:
- '.' 表示空单元格。
- '#' 表示障碍物单元格。
有效路径 是满足以下条件的空单元格序列:
- 从左上角单元格 (0, 0) 开始。
- 在右下角单元格 (m - 1, n - 1) 结束。
- 只能向:
- 右移动,从 (i, j) 到 (i, j + 1),或者
- 下移动,从 (i, j) 到 (i + 1, j)。
返回任意一个从左上角到右下角 恰好只有一条有效路径 的网格。
示例 1:

输入: m = 2, n = 3
输出: ["..#","#.."]
解释:
唯一的有效路径是:(0,0) → (0,1) → (1,1) → (1,2)
示例 2:

输入: m = 3, n = 3
输出: ["..#","#..","##."]
解释:
唯一的有效路径是:(0,0) → (0,1) → (1,1) → (1,2) → (2,2)
示例 3:
输入: m = 1, n = 4
输出: ["...."]
解释:
唯一的有效路径是:(0,0) → (0,1) → (0,2) → (0,3)
说明:
1 <= m, n <= 25
思路
构造一个 m x n 矩阵,要求从左上到右下 仅有一条 有效路径,使用 . 表示空格,# 表示有障碍物,返回任意一种构造即可。
直接的想法是第一行全空格,下面的行除了最后一列全是障碍物。
代码
/**
* @date 2026-10-27 8:49
*/
public class CreateGrid3963 {
public String[] createGrid_v1(int m, int n) {
String[] res = new String[m];
char[] chars = new char[n];
Arrays.fill(chars, '#');
chars[n - 1] = '.';
String row = new String(chars);
Arrays.fill(res, row);
chars = new char[n];
Arrays.fill(chars, '.');
res[0] = new String(chars);
return res;
}
}
性能
