3963.构造恰好一条路径的网格

目标

给你两个整数 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;
    }

}

性能

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注