新闻详情

新闻详情

首页 / 资讯中心 / 详情

元宝 LeetCode 130. 被围绕的区域 Golang实现

发布时间:2026/9/30 11:25:48来源:尧图网络
元宝    LeetCode 130. 被围绕的区域 Golang实现
LeetCode 130 的核心不是「找被包围的 O」而是反过来先保住所有和边界连通的 O剩下的 O 才是真被包围的。思路DFS 反向标记扫描矩阵四条边界第一行、最后一行、第一列、最后一列边界上遇到“‘O’”就 DFS/BFS 把与它连通的所有“‘O’” 临时改成“‘A’”表示安全再遍历整个矩阵“‘A’” → 恢复成“‘O’”还是“‘O’” → 说明没连到边界翻成“‘X’”“‘X’” 不动时间复杂度“O(mn)每个格子最多访问两次空间复杂度递归栈最坏O(mn)”。Golang DFS 实现面试推荐func solve(board [][]byte) {if len(board) 0 || len(board[0]) 0 {return}m, n : len(board), len(board[0])var dfs func(i, j int) dfs func(i, j int) { if i 0 || i m || j 0 || j n { return } if board[i][j] ! O { return } board[i][j] A // 标记安全 dfs(i1, j) dfs(i-1, j) dfs(i, j1) dfs(i, j-1) } // 上下两边 for j : 0; j n; j { dfs(0, j) dfs(m-1, j) } // 左右两列 for i : 0; i m; i { dfs(i, 0) dfs(i, n-1) } // 二次扫描 for i : 0; i m; i { for j : 0; j n; j { if board[i][j] A { board[i][j] O } else if board[i][j] O { board[i][j] X } } }}⚠️ 递归 DFS 在 200×200 全 O 时会栈较深LeetCode 一般能过工程上更稳的是下面 BFS 版。Golang BFS 实现无递归栈风险func solve(board [][]byte) {if len(board) 0 || len(board[0]) 0 {return}m, n : len(board), len(board[0])queue : [][2]int{}// 边界 O 入队并标记 add : func(i, j int) { if board[i][j] O { board[i][j] A queue append(queue, [2]int{i, j}) } } for j : 0; j n; j { add(0, j) add(m-1, j) } for i : 0; i m; i { add(i, 0) add(i, n-1) } dirs : [][2]int{{1, 0}, {-1, 0}, {0, 1}, {0, -1}} for len(queue) 0 { x, y : queue[0][0], queue[0][1] queue queue[1:] for _, d : range dirs { nx, ny : xd[0], yd[1] if nx 0 nx m ny 0 ny n board[nx][ny] O { board[nx][ny] A queue append(queue, [2]int{nx, ny}) } } } for i : 0; i m; i { for j : 0; j n; j { if board[i][j] A { board[i][j] O } else if board[i][j] O { board[i][j] X } } }}易错点边界遍历别漏四条边都要扫只扫一行会漏临时标记用“‘A’”不要用“‘T’” 之类容易和题目字符混也别用“‘X’”/“‘O’”原地修改题目不要求返回值直接改“board”空矩阵 / 单行单列开头判空单列时边界就是全部元素示例跑一遍输入X X X XX O O XX X O XX O X X底部“(3,1)” 的 O 在边界上 → 连通块保留中间“(1,1),(1,2),(2,2)” 的 O 不连边界 → 翻 X输出X X X XX X X XX X X XX O X X要不要我顺便给你一版 并查集Union-Find 实现在「连通块批量合并」这类变题里更通用。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

MySQL主从复制+Mycat2读写分离:完整配置与排坑实战 2026/9/30 12:01:54

MySQL主从复制+Mycat2读写分离:完整配置与排坑实战

把主从复制和读写分离一次搞定,这事听起来不难,实际操作后你会发现坑不少。最近一个业务模块的查询压力上来了,单库MySQL在写入一多,慢查询直接冒头。我干脆把架构升级成“MySQL主从同步 Mycat2中间层读写分离”,写操…

阅读更多 →
课堂异常行为检测系统:从YOLO+ByteTrack到ST-GCN的工业级落地实践 2026/9/30 12:01:54

课堂异常行为检测系统:从YOLO+ByteTrack到ST-GCN的工业级落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Altium Designer新手教程:从原理图到双层PCB打样的完整流程 2026/9/30 12:01:54

Altium Designer新手教程:从原理图到双层PCB打样的完整流程

从一个想法到一块能真正通电的板子,中间隔着一整套流程。如果你正在学硬件、做毕设或者想把自己的小电路变成实物,Altium Designer(下面直接叫 AD)绝对是绕不开的工具之一。我最早接触 AD 是在大学做电子设计竞赛的时候&#xff0…

阅读更多 →
YOLO实战笔记:从环境搭建到工业部署的硬核避坑指南 2026/9/30 12:01:53

YOLO实战笔记:从环境搭建到工业部署的硬核避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
React Native 鸿蒙 Image 组件核心用法与图片加载优化实战 2026/9/30 12:01:51

React Native 鸿蒙 Image 组件核心用法与图片加载优化实战

1. 为什么在鸿蒙上单独聊 Image 组件 1.1 React Native 跨平台开发在鸿蒙生态的现状 这两年做跨平台开发的朋友应该都明显感觉到,鸿蒙已经不是一个"备选项"了。从早期只有系统级应用迁移,到现在普通厂商的新应用、甚至个人开发者的小工具都在…

阅读更多 →
数据库增删改查实战:从索引优化到事务与安全删除 2026/9/30 12:01:44

数据库增删改查实战:从索引优化到事务与安全删除

1. 增删改查的本质与整体设计思路聊数据库,绕不开的永远是这四个字:增删改查。说句实在话,我入行这些年,经手的业务系统少说也有几十个,从早期的单机管理软件,到后来基于微服务架构的中台系统,无…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉