news 2026/6/26 15:50:38

【剑斩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/6/22 2:17:29

大数据领域数据架构的经典案例剖析

好的&#xff0c;各位热爱技术的朋友们&#xff01;今天&#xff0c;我们来深入探讨一个在大数据领域至关重要&#xff0c;却又常常让人感到困惑的话题——数据架构。 你是不是有过这样的经历&#xff1f; 业务部门抱怨&#xff1a;“我要的报表怎么又要等两天&#xff1f;这…

作者头像 李华
网站建设 2026/6/17 0:35:58

django景点印象服务系统-计算机毕业设计源码+无LW文档

Django景点印象服务系统 摘要 本文围绕基于Django框架开发的景点印象服务系统展开论述。通过深入分析研究背景与意义&#xff0c;明确系统开发的必要性&#xff1b;详细阐述需求分析&#xff0c;确定系统的功能与非功能要求&#xff1b;合理规划功能设计&#xff0c;构建系统的…

作者头像 李华
网站建设 2026/6/22 16:49:32

PHP vs Java:性能、应用与选择指南

性能比较PHP通常用于Web开发&#xff0c;执行速度较快&#xff0c;尤其在处理HTTP请求时表现优异&#xff0c;但整体性能低于Java。Java凭借JVM的优化和即时编译&#xff08;JIT&#xff09;技术&#xff0c;在长时间运行的高并发场景&#xff08;如企业级应用&#xff09;中性…

作者头像 李华
网站建设 2026/6/14 2:37:20

小程序计算机毕设之基于微信小程序的健康生活定制应用基于django+微信小程序的健康生活系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/14 4:39:20

Moxie Marlinspike推出注重隐私的ChatGPT替代方案Confer

如果你对隐私问题有所担忧&#xff0c;AI个人助手的兴起可能会让人感到不安。使用这些服务很难避免分享个人信息&#xff0c;而这些信息会被模型的母公司保留。随着OpenAI已经开始测试广告功能&#xff0c;很容易想象驱动Facebook和Google的数据收集模式会渗透到你的聊天机器人…

作者头像 李华