news 2026/4/17 19:04:20

【剑斩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/4/17 16:01:09

django基于微信小程序的校园食堂点餐订餐系统-计算机毕业设计源码+无LW文档

Django基于微信小程序的校园食堂点餐订餐系统 摘要 本文探讨了利用Django框架结合微信小程序开发校园食堂点餐订餐系统的过程。该系统旨在解决校园食堂在传统点餐模式下存在的排队时间长、效率低等问题&#xff0c;为师生提供便捷的点餐服务&#xff0c;同时提升食堂的管理效率…

作者头像 李华
网站建设 2026/4/17 17:54:04

Comsol 中浆液扩散模型:注浆过程的数字化洞察

comsol注浆&#xff0c;浆液扩散模型在岩土工程、建筑施工等诸多领域&#xff0c;注浆是一项关键技术&#xff0c;它能有效改善土体性质、增强结构稳定性。而理解浆液在地下的扩散规律至关重要&#xff0c;借助 Comsol 建立浆液扩散模型&#xff0c;可让我们在虚拟环境中深入探…

作者头像 李华
网站建设 2026/4/16 11:40:07

2026中专生考大数据与财务管理专业学习指南

行业需求与就业前景数据分析在财务领域的应用日益广泛&#xff0c;企业需要能够处理财务数据并从中提取价值的专业人才。掌握数据分析技能可提升就业竞争力&#xff0c;尤其在金融科技、企业财务分析等岗位需求旺盛。大数据与财务管理专业结合了传统财务知识与现代数据技术&…

作者头像 李华
网站建设 2026/4/15 12:36:38

手把手教你降AI不伤文:保姆级操作让论文既通过检测又保持专业

手把手教你降AI不伤文&#xff1a;保姆级操作让论文既通过检测又保持专业 TL;DR&#xff1a;降AI率最怕的就是把专业术语改没了、论文变得不伦不类。本文教你如何实现「降AI不伤文」&#xff1a;选对工具&#xff08;推荐嘎嘎降AI&#xff09;、分段处理、处理后校对。掌握这套…

作者头像 李华
网站建设 2026/4/16 10:48:13

小程序毕设选题推荐:基于django+微信小程序的健康生活系统个人健康生活平台小程序【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华
网站建设 2026/4/17 2:53:15

微分方程一维抛物热传导方程数值解法全解析

微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉&#xff0c;隐式欧拉&#xff0c;梯形公式&#xff0c;改进欧拉 五点差分&#xff0c;九点差分 差分格式&#xff0c;紧差分格式 直拍&#xff0c;只有pdf版方法说明 word版 公式纯手打 数值例子…

作者头像 李华