网易首页 > 网易号 > 正文 申请入驻

2026-09-21:构造恰好一条路径的网格。用go语言,给定两个整数 m 和 n,它们分别代表一个矩形网格的行数和列数。 请生成任意一个大小为 m

0
分享至

2026-09-21:构造恰好一条路径的网格。用go语言,给定两个整数 m 和 n,它们分别代表一个矩形网格的行数和列数。

请生成任意一个大小为 m 行、n 列的网格,网格中的每个格子只能填写两种字符:

“.” 表示可以通行的空格;

“ 表示不能通行的障碍格。

在这个网格中,从最左上角的格子出发,到达最右下角的格子时,每一步只能往右走一格,或者往下走一格,并且只能经过“.”格。要求从起点到终点能够走通的路线数量正好为 1 条。

请返回任意一个满足这个条件的网格布局。

1 <= m, n <= 25。

输入: m = 2, n = 3。

输出: ["..#","#.."]。

解释:


在这里插入图片描述

唯一的有效路径是:(0,0) → (0,1) → (1,1) → (1,2)

题目来自力扣3963。

大体步骤如下:

第一步:准备结果容器
程序先创建一个长度为 m 的字符串数组,用来保存最终的 m 行网格。每一行最终都是一个由字符 “.” 和 “ 组成的字符串。

第二步:构造第一行
第一行被直接构造成 n 个 “.”。也就是说,第一行的所有格子都是可以通行的空单元格,没有任何障碍物。

第三步:构造后面所有行使用的模板
程序预先构造一个“后续行模板”。这个模板的内容是:前 n-1 个字符全部是 “,最后一个字符是 “.”。
如果 n 等于 1,那么 n-1 就是 0,所以这个模板实际上只有一个 “.”,也就是整行只有一个可通行格子。
这样构造模板的好处是,只需要创建一次字符串,后面每一行都可以重复使用它,避免在循环里反复拼接字符串。

第四步:填充第 2 行到第 m 行
从第二行开始,一直到第 m 行,每一行都直接使用刚才构造好的模板。
因此,除了第一行之外,其余所有行的前 n-1 个格子都是障碍物 “,只有最后一列的格子是空单元格 “.”。

第五步:返回网格
最后,程序返回这个字符串数组,它表示一个满足条件的 m 行 n 列网格。

为什么这个网格恰好只有一条有效路径?

从起点 (0, 0) 开始,它位于第一行。第一行全是 “.”,所以可以向右走。
但是,如果从第一行往下走,进入第二行时,第二行的前 n-1 列都是 “,只有最后一列是 “.”。
因此,如果从第一行的非最后一列往下走,就会进入障碍物,这是不允许的。
所以,从起点出发,只能一直沿着第一行向右走,直到到达第一行的最后一列,也就是 (0, n-1)。
到达 (0, n-1) 后,右边已经没有格子了,只能向下走,进入 (1, n-1)。
而 (1, n-1) 是第二行的最后一列,它是 “.”。
接下来,因为每一行的最后一列都是 “.”,而其他列都是 “,所以从 (1, n-1) 开始也只能继续向下走,最终到达右下角 (m-1, n-1)。
因此,整条路径被唯一确定:先沿第一行一直向右走到最右端,再沿最后一列一直向下走到最底端。
不存在第二条有效路径。

对于题目中给出的例子 m = 2,n = 3,这段代码会生成:

第一行:“...”
第二行:“##.”

也就是网格:

它的唯一有效路径是:(0,0) → (0,1) → (0,2) → (1,2)。
而题目描述里给出的输出示例 [“.., “#..”] 是另一种同样合法的构造,只是障碍物摆放方式不同,但都满足“恰好一条有效路径”的要求。

边界情况说明:

当 m = 1 时,只有第一行,第一行全是 “.”,从左上角到右下角只能一直向右走,路径唯一。
当 n = 1 时,只有一列,第一行是 “.”,后续每一行模板也只有一个 “.”,从左上角到右下角只能一直向下走,路径也唯一。

时间复杂度:

构造第一行需要 O(n) 时间。
构造后续行模板也需要 O(n) 时间。
创建一个长度为 m 的结果数组需要 O(m) 时间。
把模板赋给后面 m-1 行,每次只是字符串引用赋值,可以看作 O(1),总共 O(m)。
所以总时间复杂度是 O(m + n)。

额外空间复杂度:

结果数组本身占 O(m) 个字符串头。
第一行字符串占 O(n) 个字符。
后续行模板字符串占 O(n) 个字符。
由于后面所有行都共享同一个模板字符串,并没有为每一行单独复制一份长度为 n 的字符内容。
因此,算法额外使用的空间是 O(m + n)。
如果把最终输出中每一行的完整字符都单独展开计算,那么字符总数是 m × n,空间会是 O(m × n),但这段代码通过共享字符串减少了实际存储。

Go完整代码如下:

package main

import (
"fmt"
"strings"
)

func createGrid(m, n int) []string {
ans := make([]string, m)
ans[0] = strings.Repeat(".", n)
row := strings.Repeat("#", n-1) + "." // 避免在循环中反复创建字符串
for i := 1; i < m; i++ {
ans[i] = row
}
return ans
}

func main() {
m := 2
n := 3
result := createGrid(m, n)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def create_grid(m, n):
# 第一行全是空单元格
ans = ['.' * n]
# 后续每一行:前 n-1 个是障碍物,最后一个是空单元格
row = '#' * (n - 1) + '.'
for _ in range(1, m):
ans.append(row)
return ans

def main():
m = 2
n = 3
result = create_grid(m, n)
print(result)

if __name__ == '__main__':
main()

C++完整代码如下:

  

std::vector string > createGrid( int m, int n) {
std::vector string > ans(m);
ans[ 0 ] = std:: string (n, '.' ); // 第一行全是空单元格
std:: string row = std:: string (n - 1 , '#' ) + "." ; // 后续行:前 n-1 个障碍物,最后一个是空单元格
for ( int i = 1 ; i < m; ++i) {
ans[i] = row;
}
return ans;
}

int main() {
int m = 2 ;
int n = 3 ;
std::vector string > result = createGrid(m, n);

std::cout << "[" ;
for (size_t i = 0 ; i < result.size(); ++i) {
if (i > 0 ) std::cout << " " ;
std::cout << result[i];
}
std::cout << "]" << std::endl;

return 0 ;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
张艺谋万万没想到!自己埋头苦干42年,最后竟给岳父岳母做了嫁衣

张艺谋万万没想到!自己埋头苦干42年,最后竟给岳父岳母做了嫁衣

财叔
2026-10-13 13:55:15
家中出现3个迹象,多半是旺宅,别破坏

家中出现3个迹象,多半是旺宅,别破坏

阿离家居
2026-10-12 05:26:23
央视缅北纪录片曝光受害细节!被逼吃盐巴,鼻子灌芥末,钉棍毒打

央视缅北纪录片曝光受害细节!被逼吃盐巴,鼻子灌芥末,钉棍毒打

青梅侃史啊
2026-10-12 16:54:48
上海社零消费数据今年连续出现跌幅扩大,这是怎么了?

上海社零消费数据今年连续出现跌幅扩大,这是怎么了?

黑噪音
2026-10-13 17:05:32
争议!郑钦文长城拍摄夺冠写真 游客被拦住 网友质问:这样合法吗?

争议!郑钦文长城拍摄夺冠写真 游客被拦住 网友质问:这样合法吗?

念洲
2026-10-12 21:04:44
当年刺死辱母者的于欢,刑期由无期徒刑改判五年且提前获释,如今成家立业,经营三家店铺,人生迎来全新转机

当年刺死辱母者的于欢,刑期由无期徒刑改判五年且提前获释,如今成家立业,经营三家店铺,人生迎来全新转机

唠叨说历史
2026-10-13 16:03:17
重庆市委原副书记、市政府原市长黄奇帆涉嫌严重违纪违法 目前正接受中央纪委国家监委纪律审查和监察调查

重庆市委原副书记、市政府原市长黄奇帆涉嫌严重违纪违法 目前正接受中央纪委国家监委纪律审查和监察调查

闪电新闻
2026-10-13 20:01:13
油价调整通知:受国际油价影响,油价预估跌幅为220元/吨,92号汽油预计降0.18元/升,95号汽油下调0.19元/升

油价调整通知:受国际油价影响,油价预估跌幅为220元/吨,92号汽油预计降0.18元/升,95号汽油下调0.19元/升

吉刻新闻
2026-10-13 08:27:33
国外发现“饿两天定律”,体重从138斤降到108斤,稳稳瘦下30斤

国外发现“饿两天定律”,体重从138斤降到108斤,稳稳瘦下30斤

健身狂人
2026-10-11 00:58:32
央视曝光大骗局:投资1.2亿元项目仅建成5个棚,空壳公司成立9天承接项目骗钱,村民:村里和当地政府也找不到这家公司

央视曝光大骗局:投资1.2亿元项目仅建成5个棚,空壳公司成立9天承接项目骗钱,村民:村里和当地政府也找不到这家公司

每日经济新闻
2026-10-12 17:30:39
400亿资金,抄底入市!谁在逆势布局?

400亿资金,抄底入市!谁在逆势布局?

证券时报
2026-10-12 22:41:05
中央政法委下死命令!这一大批行为将被从严查处,一个都不放过!

中央政法委下死命令!这一大批行为将被从严查处,一个都不放过!

细说职场
2026-10-13 18:13:09
他放弃国民党高薪投奔我党,建国后成为元帅,毕生都敬佩毛主席

他放弃国民党高薪投奔我党,建国后成为元帅,毕生都敬佩毛主席

小莜读史
2026-10-13 20:11:08
印度男子约女友去瀑布游玩,得知她下月要嫁别人,一怒之下将其推下千尺峡谷

印度男子约女友去瀑布游玩,得知她下月要嫁别人,一怒之下将其推下千尺峡谷

全球吃瓜现场
2026-10-13 18:10:35
你信不信?高中里那些长得最好看的姑娘,往往最后输得最惨

你信不信?高中里那些长得最好看的姑娘,往往最后输得最惨

户外阿毽
2026-10-13 03:13:55
全民化债的时代已经来了!

全民化债的时代已经来了!

职场资深秘书
2026-10-13 18:43:42
鲁尼:B费快要受够了,卡里克再不做出调整恐会发生激烈冲突

鲁尼:B费快要受够了,卡里克再不做出调整恐会发生激烈冲突

懂球帝
2026-10-13 18:12:09
做完手术人就废了,这5种手术不需要做,别让无知害了自己!

做完手术人就废了,这5种手术不需要做,别让无知害了自己!

健身狂人
2026-10-08 13:49:26
“月亮太亮了影响睡觉”,白岩松谈如何看待接诉即办不合理诉求

“月亮太亮了影响睡觉”,白岩松谈如何看待接诉即办不合理诉求

新京报
2026-10-13 15:22:47
不查不知道,一查吓一跳!跨境赌诈头目佘智江,奢靡生活藏不住

不查不知道,一查吓一跳!跨境赌诈头目佘智江,奢靡生活藏不住

爱下厨的阿酾
2026-10-13 14:36:18
2026-10-13 21:11:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1511文章数 83关注度
往期回顾 全部

科技要闻

扎克伯格宣布追上OpenAI!Meta新模型亮相

头条要闻

黄奇帆被查:早年在上海工作 2016年卸任重庆市市长

头条要闻

黄奇帆被查:早年在上海工作 2016年卸任重庆市市长

体育要闻

走调的歌声里全是感情 最好的郑钦文尚未登场

娱乐要闻

谭松韵亲自解答兰香结局遗憾

财经要闻

"黑医师"产业链调查:不学医竟能"拿证"

汽车要闻

平台可以共享 设计不能趋同:Stellantis的六个新答案

态度原创

教育
健康
房产
手机
公开课

教育要闻

高中也能“登记入学、划片招生”?把国家改革方向和成都现状放在一起看

孩子运动莫名晕倒?当心这类疾病

房产要闻

巨无霸来了!海口百亿大盘,正式动工!

手机要闻

荣耀官宣WIN系列全家桶产品矩阵

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版