news 2026/5/12 17:50:48

【剑斩OFFER】算法的暴力美学——力扣 130 题:被围绕的区域

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑斩OFFER】算法的暴力美学——力扣 130 题:被围绕的区域

一、题目描述

二、算法原理

1)处理边缘 'O',防止干扰微软 'O' :

2)使用层序遍历查找中间的使用的 'O' 并且让他变成 '1':

https://blog.csdn.net/2403_84958571/article/details/157102889?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

3)在查找围绕'0',之后最后再把 '1' 变成 ‘O’

三、代码实现

class Solution { int dx[4] = {0,0,1,-1}; int dy[4] = {1,-1,0,0}; typedef pair<int,int> PII; public: void solve(vector<vector<char>>& board) { for(int i = 0; i < board.size();i++)//处理 第 1 行 和 最后 1 行的边界情况,边界 'O' = '1',防止干扰围绕的 'O' { if(i == 0 || i == board.size() - 1) { for(int k = 0; k <board[0].size(); k++) { if(board[i][k] == 'O') { board[i][k] = '1'; become(board,i,k); } } } } for(int i = 1; i < board.size() - 1; i++)//处理中间行的边界情况,边界 'O' = '1' { for(int k = 0; k < board[0].size();k++) { if(k == 0 || k == board[0].size() - 1) { if(board[i][k] == 'O') { board[i][k] = '1'; become(board,i,k); } } } } for(int i = 0; i < board.size(); i++)//查找中间 'O' { for(int k = 0; k < board[0].size(); k++) { if(board[i][k] == 'O') { board[i][k] = 'X'; CheckBoard(board,i,k); } if(board[i][k] == '1')//还原 '1' = 'O' { board[i][k] = 'O'; } } } } void CheckBoard(vector<vector<char>>& board,int i,int k) { queue<PII> que; que.push({i,k}); while(que.size()) { auto [x,y] = que.front(); que.pop(); for(int a = 0; a < 4; a++) { int new_x = x + dx[a]; int new_y = y + dy[a]; if(new_x >= 0 && new_x < board.size() && new_y >= 0 && new_y < board[0].size() && board[new_x][new_y] == 'O') { board[new_x][new_y] = 'X'; que.push({new_x,new_y}); } } } } void become(vector<vector<char>>& board,int i,int k) { queue<PII> que; que.push({i,k}); while(que.size()) { auto [x,y] = que.front(); que.pop(); for(int a = 0; a < 4; a++) { int new_x = x + dx[a]; int new_y = y + dy[a]; if(new_x >= 0 && new_x < board.size() && new_y >= 0 && new_y < board[0].size() && board[new_x][new_y] == 'O') { board[new_x][new_y] = '1'; que.push({new_x,new_y}); } } } } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 18:43:58

基于扩频信号的水声信道数据传输系统仿真,研究满足了WSSUS假设的瑞利信道模型,采用相干BPSK调制

基于扩频信号的水声信道数据传输系统仿真&#xff0c;研究满足了WSSUS假设的瑞利信道模型&#xff0c;采用相干BPSK调制&#xff0c;联合多普勒Rake接收机&#xff0c;利用matlab仿真&#xff0c;在该算法在不同信噪比有良好的误码率。 下面是部分仿真代码和结果水声通信这玩意…

作者头像 李华
网站建设 2026/5/12 18:00:01

PySide系列-07-QMainWindow

PySide step by step系列 1、QMainWindow QMainWindow 是一个继承自 QWidget 的类&#xff0c;专门设计用来作为主应用程序窗口。它内置了多个标准的 GUI 组件区域&#xff0c;方便开发人员快速搭建界面。 QMainWindow 提供了以下几个核心区域&#xff08;布局区域&#xff…

作者头像 李华
网站建设 2026/5/11 9:46:08

基于特征匹配的英文印刷字符识别:MATLAB 实现之旅

14.基于特征匹配的英文印刷字符识别代码 MATLAB程序 可以识别英文&#xff0c;当鼠标指在某个英文单词时&#xff0c;在坐下角会显示相关字符&#xff0c;原有62张图片&#xff0c;包括大小写A-Z和0-9用于匹配&#xff0c;具体可参照:https://blog.csdn.net/horseinch/article/…

作者头像 李华
网站建设 2026/5/9 20:44:22

知网AIGC检测不通过?学长亲测的避坑指南

知网AIGC检测不通过&#xff1f;学长亲测的避坑指南 TL;DR&#xff1a;知网AIGC检测不通过别慌&#xff0c;这份避坑指南帮你搞定。核心思路&#xff1a;先定位高风险段落&#xff0c;再用专业工具降AI&#xff08;推荐嘎嘎降AI&#xff0c;达标率99.26%&#xff09;&#xff0…

作者头像 李华
网站建设 2026/5/10 10:37:51

聊聊神奇的连续拉丝机自动控制程序

连续拉丝机程序&#xff0c;拉丝机自动控制程序&#xff0c;解决了大部分拉丝机经常出现的拉力不均匀&#xff0c;电机转速不稳等问题&#xff0c;运行稳定&#xff0c;安全可靠。在工业生产领域&#xff0c;拉丝机那可是相当重要的设备。但以前&#xff0c;不少拉丝机老是被拉…

作者头像 李华
网站建设 2026/5/10 8:51:27

QT编写的CAN通信调试工具:从原理到实践

CAN调试工具源代码吉阳光电致远周立功USB卡CAN单帧通信协议带相同ID折叠显式加载dll数据保存QT编写的CAN通信调试工具&#xff0c;基于致远周立功USB转CAN卡&#xff0c;可完成CAN帧的发送和接收&#xff0c;带配置参数自动保存&#xff0c;定时发送&#xff0c;帧类型选择&…

作者头像 李华