力扣(LeetCode)130. 被围绕的区域(C++)

news2024/9/23 19:25:57

dfs

只有和边界相连的 O O O 不会被 X X X 包围。遍历边界,搜索边界 O O O 的连通块,标记这些连通块。最后一次遍历矩阵,将标记的格子改回 O O O ,其他格子改成 X X X ,即为所求。

提示 : 可以用数组标记连通块,也可以将连通块的字符改成没有出现过的助记符,在遍历时,将标记的格子,或者助记符改回 O O O 即可。
提示 : d x / d y dx/dy dx/dy 是方向数组,便于搜索操作。

class Solution {
public:
    vector<vector<char>> board;
    int dx[4] = {-1,0,1,0},dy[4] = {0,1,0,-1};
    int n ,m;
    void solve(vector<vector<char>>& _board) {
        board = _board;
        n = board.size(),m = board[0].size();
        for(int i = 0;i<n;i++) {
            if('O'==board[i][0]) dfs(i,0);
            if('O'==board[i][m-1]) dfs(i,m-1);
        }
        for(int i = 0;i<m;i++){
            if('O'==board[0][i]) dfs(0,i);
            if('O'==board[n-1][i]) dfs(n-1,i);
        }
        for(int i = 0;i<n;i++)
            for(int j = 0;j<m;j++)
                if('#'==board[i][j]) board[i][j] = 'O';
                else board[i][j] = 'X';
        _board = board;
    }
    void dfs(int x,int y){
        board[x][y] = '#';
        for(int i = 0;i<4;i++){
            int a = x + dx[i], b = y + dy[i];
            if(a>=0&&a<n&&b>=0&&b<m&&board[a][b]=='O') dfs(a,b);
        }
    }
};
  1. 时间复杂度 : O ( n × m ) O(n\times m) O(n×m) n n n 是矩阵的行, m m m 是矩阵的列, 对矩阵边界尝试深搜的最坏时间复杂度 O ( n × m ) O(n\times m) O(n×m) ,一次遍历矩阵的时间复杂度 O ( n × m ) O(n\times m) O(n×m) ,忽略常数时间复杂度 O ( n × m ) O(n\times m) O(n×m)
  2. 空间复杂度 : O ( n × m ) O(n\times m) O(n×m) , 深搜压栈最大深度等于矩阵大小 O ( n × m ) O(n\times m) O(n×m)

AC

AC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基于springboot+vue药店实名制买药系统 前后端分离

开发背景和意义 药品一直以来在人类生活中扮演着非常重要的角色&#xff0c;随着时代的发展&#xff0c;人们基本已经告别了那个缺医少药的年代&#xff0c;各大药房基本随处可以&#xff0c;但是很多时候因为没有时间或者在药店很难找到自己想要购买的药品&#xff0c;所以很…

元宇宙产业委叶毓睿:狂欢过后,万众期待的元宇宙怎么样了?

叶毓睿&#xff08;王学民/摄&#xff09; 自元宇宙出现在大众视野&#xff0c;大众对元宇宙的好奇和探索&#xff0c;从来没有停止过。当元宇宙的热度逐渐下降&#xff0c;我们不禁想要知道&#xff0c;狂欢过后&#xff0c;万众期待的元宇宙怎么样了&#xff1f; 近日&#x…

【吴恩达机器学习笔记】十一、聚类

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为学习吴恩达机器学习视频的同学提供的随堂笔记。 &#x1f4da;专栏简介&#xff1a;在这个专栏&#xff0c;我将整理吴恩达机器学习视频的所有内容的笔记&…

算法刷题入门线性表|单调栈

一、概念 1、栈的定义 栈 是仅限在 一端 进行 插入 和 删除 的 线性表。 栈 又被称为 后进先出 (Last In First Out) 的线性表&#xff0c;简称 LIFO 。 2、栈顶 栈 是一个线性表&#xff0c;我们把允许 插入 和 删除 的一端称为 栈顶。 3、栈底 和 栈顶 相对&#xff0c;另一端…

java计算机毕业设计ssm软件学院社团管理系统l62lq(附源码、数据库)

java计算机毕业设计ssm软件学院社团管理系统l62lq&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#…

[附源码]计算机毕业设计基于SpringBoot+Vue的健身房会员系统的设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Linux系统( Centos 7) 配置与管理Apache服务器实例详细步骤

Linux系统&#xff08; Centos 7&#xff09; 配置与管理Apache服务器实例详细步骤 服务器centos7-1 1.配置网络。 [rootcentos7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV…

【WPF】附加事件

【WPF】附加事件什么是附加事件附加事件用法Microsoft 官方文档附加事件案例定义自定义控件注册使用附加事件什么是附加事件 Microsoft 官方概述&#xff1a;   附加事件可用于在非元素类中定义新的 路由事件 &#xff0c;并在树中的任何元素上引发该事件。 为此&#xff0c;…

【WebRTC】拥塞控制 GCC 类图

GoogCcNetworkController : 整个 congestion_controller 模块的中心类&#xff0c;是对外的接口 AcknowledgedBitrateEstimatorInterface AcknowledgedBitrateEstimator : 估算当前的吞吐量。 BitrateEstimator : 使用滑动窗口 卡尔曼滤波计算当前发送吞吐量。 RobustThro…

【Android App】实战项目之仿拼多多的直播带货(附源码和演示 超详细必看)

需要源码请点赞关注收藏后评论区留言私信~~~ 近年来电商业态发生了不小的改变&#xff0c;传统的电商平台把商品分门别类&#xff0c;配上精美的图文说明供消费者挑选&#xff0c;新潮的电商平台则请来明星网红&#xff0c;开启直播秀向广大粉丝推销商品&#xff0c;往往一场直…

微服务应对雪崩的容错方案

引言 书接上篇 微服务绕不过的坎-服务雪崩 &#xff0c;玩微服务不可避免的问题&#xff1a;服务雪崩&#xff0c;那为了应付服务雪崩问题&#xff0c;需要做啥预防性操作呢&#xff1f;答案是&#xff1a;做好容错保护 容错方案 前面说了&#xff0c;要防止雪崩的扩散&…

[附源码]计算机毕业设计springboot疫情期间小学生作业线上管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Android自定义视图

View 自定义视图主要涉及四个方面&#xff1a;绘图、交互、性能和封装 绘图 主要涉及两个对象&#xff1a;画布&#xff08;Canvas&#xff09;和画笔&#xff08;Paint&#xff09;&#xff0c;画布主要解决画什么的问题&#xff0c;在画布上可以绘制各种各样的图形&#x…

《CTFshow - Web入门》04. Web 31~40

Web 31~40web31知识点题解web32知识点题解web33知识点题解web34知识点题解web35知识点题解web36知识点题解web37知识点题解web38知识点题解web39知识点题解web40知识点题解web31 知识点 这里依旧可以用到 web29 的方法&#xff1a; 嵌套eval逃逸参数 当然&#xff0c;能多学…

# 智慧社区管理系统-基础信息管理-06抄表管理

一后端 1:entity package com.woniu.community.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class Records {private int id;private int typeId;private Double num…

博安生物更新招股书:上半年亏1.5亿 绿叶制药与建银聚源是股东

雷递网 雷建平 12月3日山东博安生物技术股份有限公司&#xff08;简称&#xff1a;“博安生物”&#xff09;日前再次递交招股书&#xff0c;并更新招股书&#xff0c;准备在香港上市。上半年期内亏损1.53亿元博安生物是绿叶制药集团的附属公司&#xff0c;于2013年成立&#x…

远程桌面树莓派【内网穿透】

本篇文章主要分享如何在公网环境下&#xff0c;远程桌面连接家里的树莓派。 远程桌面环境&#xff0c;我们选择通过XRDP来实现&#xff0c;它内部使用的是windows远程桌面的协议。 而由于现在普遍处于大内网环境&#xff0c;绝大部分人都没有公网IP&#xff0c;所以我们这里用…

(9)点云数据处理学习——Global registration(全局注册)

1、主要参考 &#xff08;1&#xff09;官网的地址 Global registration — Open3D 0.16.0 documentation 2、作用和原理 2.1个人理解 PS理解&#xff1a;&#xff08;1&#xff09;ICP的作用是&#xff0c;2个点云数据在初步转换关系&#xff08;已知不精确&#xff09;的…

【关系抽取】TPLinker:单阶段联合抽取,并解决暴漏偏差

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

车载GNSS/INS/LiDAR坐标系定义与理解

目录一、基本坐标系1.1 地心惯性坐标系&#xff08;Inertial coordinate system&#xff0c;i系&#xff09;1.2 地心地固坐标系&#xff08;Earth-Centered, Earth-Fixed&#xff0c;e系&#xff09;1.3 导航坐标系&#xff08;Navigation&#xff0c;n系&#xff09;1.4 车体…