LeetCode LCS 03. 主题空间(广度优先搜索BFS)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

「以扣会友」线下活动所在场地由若干主题空间与走廊组成,场地的地图记作由一维字符串型数组 grid,字符串中仅包含 “0"~"5” 这 6 个字符。
地图上每一个字符代表面积为 1 的区域,其中 “0” 表示走廊,其他字符表示主题空间。
相同且连续(连续指上、下、左、右四个方向连接)的字符组成同一个主题空间。

假如整个 grid 区域的外侧均为走廊。请问,不与走廊直接相邻的主题空间的最大面积是多少?
如果不存在这样的空间请返回 0。

示例 1:
输入:grid = ["110","231","221"]
输出:1
解释:4 个主题空间中,只有 1 个不与走廊相邻,面积为 1

在这里插入图片描述

示例 2:
输入:grid = ["11111100000","21243101111","21224101221","11111101111"]
输出:3
解释:8 个主题空间中,有 5 个不与走廊相邻,面积分别为 31112,最大面积为 3

在这里插入图片描述

提示:
1 <= grid.length <= 500
1 <= grid[i].length <= 500
grid[i][j] 仅可能是 "0""5"

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/YesdPw
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先扫描一遍边界,以及和 0 相邻的位置,并以该位置开始 BFS
  • 在扫描一遍就是剩余不跟走廊相邻的,记录最大面积
class Solution {
public:typedef pair<int,int> pii;vector<vector<int>> dir = {{1,0},{0,1},{-1,0},{0,-1}};int largestArea(vector<string>& grid) {int m = grid.size(), n = grid[0].size();vector<vector<bool>> vis(m, vector<bool>(n, false));for(int i = 0; i < m; ++i){for(int j = 0; j < n; ++j){if(vis[i][j])continue;if((i==0 || i==m-1 || j==0 || j==n-1) && grid[i][j] != '0'){	// 边界 且 不为 0,也是跟外侧连通的bfs(grid, vis, m, n, i, j);}else if(grid[i][j] == '0'){	// 当前是 0, 检查周围的位置vis[i][j] = true;for(int k = 0; k < 4; ++k){int nx = i + dir[k][0];int ny = j + dir[k][1];if(nx>=0 && nx<m && ny>=0 && ny<n && !vis[nx][ny] && grid[nx][ny] != '0'){	// 周围的位置未访问,且不为 0,也是跟走廊相邻的bfs(grid, vis, m, n, nx, ny);}}}}}int maxArea = 0;for(int i = 0; i < m; ++i){for(int j = 0; j < n; ++j){	// 剩余的不跟走廊相邻的区域if(vis[i][j]) continue;maxArea = max(maxArea, bfs(grid, vis, m, n, i, j));}}return maxArea;}int bfs(vector<string>& grid, vector<vector<bool>> &vis, int m, int n, int i, int j){int area = 0;char color = grid[i][j]; // 颜色vis[i][j] = true;queue<pii> q;q.push({i, j});while(!q.empty()){int x = q.front().first;int y = q.front().second;q.pop();area++;for(int k = 0; k < 4; ++k){int nx = x + dir[k][0];int ny = y + dir[k][1];if(nx>=0 && nx<m && ny>=0 && ny<n && !vis[nx][ny] && grid[nx][ny]==color){	// 在范围内,未访问,颜色一样vis[nx][ny] = true;q.push({nx, ny});}}}return area;}
};

2956 ms 376.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

UIImage 裁剪图片和等比列缩放图片

本文转载至 http://blog.csdn.net/cuiweijie3/article/details/9514293 转自 http://www.tedz.me/ios/uiimage-crop-resize-image interface UIImage(UIImageScale)-(UIImage*)getSubImage:(CGRect)rect;-(UIImage*)scaleToSize:(CGSize)size;endimplementation UIImage(UIIma…

python模式匹配算法_详解Python 最短匹配模式

问题你正在试着用正则表达式匹配某个文本模式&#xff0c;但是它找到的是模式的最长可能匹配。 而你想修改它变成查找最短的可能匹配。解决方案这个问题一般出现在需要匹配一对分隔符之间的文本的时候(比如引号包含的字符串)。 为了说明清楚&#xff0c;考虑如下的例子&#xf…

Paddle 基于预训练模型 ERNIE-Gram 实现语义匹配

文章目录1. 导入一些包2. 加载数据3. 数据预处理3.1 获取tokenizer&#xff0c;得到 input_ids, token_type_ids3.2 转换函数、batch化函数、sampler、data_loader4. 编写模型5. 学习率、参数衰减、优化器、loss、评估标准6. 评估函数7. 训练评估8. 保存模型到文件9. 预测10. 多…

j2ee和mysql怎么连接_J2EE数据库连接不再烦恼

刚开始接触j2ee的时候总是为数据库的开关连接问题而烦恼,虽然问题很简单却很是琐碎,于是干脆写成一个类将所有必要的基本操作全部总结进去,以后只要轻松的import一下就可以了啊:)菜鸟们enjoying!import java.sql.Connection;import java.sql.Statement;import java.sql.ResultS…

SQL SERVER PIVOT 行转列、列传行

在数据库操作中&#xff0c;有些时候我们遇到需要实现“行转列”的需求&#xff0c;例如一下的表为某店铺的一周收入情况表&#xff1a; WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据&#xff1a; INSERT INTO WEEK_INCOME SELECT 星期一,1000 UNION…

python安装scipy出现红字_windows下安装numpy,scipy遇到的问题总结

1.安装numpy下载numpy编译包&#xff0c;进入该目录下&#xff0c; 调用命令 python setup.py install进行安装&#xff0c;返回错误&#xff1a;error: Unable to find vcvarsall.bat出现这个原因的问题貌似跟vc编译器有关&#xff0c;具体原因没有细究&#xff0c;但是经Goog…

mysql cluster 查看数据库表名称_MySQL Cluster如何创建磁盘表方法解读

MySQL Cluster采用一系列的Disk Data objects来实现磁盘表;接下来为您详细介绍一、概念MySQL Cluster采用一系列的Disk Data objects来实现磁盘表。Tablespaces&#xff1a;作用是作为其他Disk Data objects的容器。Undo log files&#xff1a;存储事务进行回滚需要的信息&…

(运算符) 运算符

& 运算符既可作为一元运算符也可作为二元运算符。 备注 一元 & 运算符返回操作数的地址&#xff08;要求 unsafe 上下文&#xff09;。 为整型和 bool 类型预定义了二进制 & 运算符。 对于整型&#xff0c;& 计算操作数的逻辑按位“与”。 对于 bool 操作数&am…

LeetCode 1903. 字符串中的最大奇数

文章目录1. 题目2. 解题1. 题目 给你一个字符串 num &#xff0c;表示一个大整数。 请你在字符串 num 的所有 非空子字符串 中找出 值最大的奇数 &#xff0c;并以字符串形式返回。如果不存在奇数&#xff0c;则返回一个空字符串 “” 。 子字符串 是字符串中的一个连续的字符…

python模拟qq空间登录_python selenium模拟登录163邮箱和QQ空间

最近在看python网络爬虫&#xff0c;于是我想自己写一个邮箱和QQ空间的自动登录的小程序&#xff0c;下面以登录163邮箱和QQ空间和为例&#xff1a;了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用&#xff0c;WebDriver 只能在一个页面上对元素识别与定位&#x…

mysql分页插件springboot_SpringBoot--使用Mybatis分页插件

1、导入分页插件包和jpa包org.springframework.bootspring-boot-starter-data-jpacom.github.pagehelperpagehelper-spring-boot-starter1.2.52、增加分页配置# 主键自增回写方法,默认值MYSQL,详细说明请看文档mapper:identity: MYSQL# 设置 insert 和 update 中&#xff0c;是…

top 命令详解

作用&#xff1a; 实时动态查看系统的整体运行情况&#xff0c; 是一个综合了多方信息监测系统性能和运行信息的实用工具。 选项&#xff1a;-b 以批处理模式操作-c 显示完整的命令-d 屏幕刷新间隔时间-I 忽略失效过程-s 保密模式-S 累积模式-i 设置时间间隔-u 指定用户…

LeetCode 1904. 你完成的完整对局数

文章目录1. 题目2. 解题1. 题目 一款新的在线电子游戏在近期发布&#xff0c;在该电子游戏中&#xff0c;以 刻钟 为周期规划若干时长为 15 分钟 的游戏对局。 这意味着&#xff0c;在 HH:00、HH:15、HH:30 和 HH:45 &#xff0c;将会开始一个新的对局&#xff0c;其中 HH 用一…

python scipy库函数solve用法_如何在中使用事件scipy.integrate.solve_ivp

我不确定事件处理是否scipy.integrate.solve_ivp工作正常。在下面的例子中&#xff0c;我对一个导数进行积分&#xff0c;得到一个三次多项式&#xff0c;它的根在x-6&#xff0c;x-2和x2。我设置了一个事件函数&#xff0c;返回y&#xff0c;在x值处为零。我希望在解决方案的t…

将MYSQL查询导出到文件

sql文件&#xff1a; set names utf8; select * from xxxxx mysql命令&#xff1a; mysql -h xxxx -uxxxx -p < 4.sql > 4.txt 转载于:https://www.cnblogs.com/aguncn/p/4449969.html

mysql维护计划任务_浅谈MySQL event 计划任务

一、查看event是否开启show variables like %sche%;set global event_scheduler 1;二、-- 设置时区并设置计划事件调度器开启&#xff0c;也可以 event_scheduler onset time_zone 8:00;set global event_scheduler 1;-- 设置该事件使用或所属的数据库base数据库use test;--…

LeetCode 1905. 统计子岛屿(BFS)

文章目录1. 题目2. 解题1. 题目 给你两个 m x n 的二进制矩阵 grid1 和 grid2 &#xff0c;它们只包含 0 &#xff08;表示水域&#xff09;和 1 &#xff08;表示陆地&#xff09;。 一个 岛屿 是由 四个方向 &#xff08;水平或者竖直&#xff09;上相邻的 1 组成的区域。 任…

vue是什么软件_Angular vs React vs Vue:2020年的最佳选择是什么?

在2020年&#xff0c;想象没有HTML&#xff0c;CSS和Javascript的Web开发是不切实际的。 Javascript是Web应用程序前端开发的灵魂。 如果您登陆此页面&#xff0c;那么我认为您在Java语言和Java编程语言的不同框架和库之间感到困惑。企业和软件开发人员最常见的一些查询是&…

Ajax的实现

一、JavaScript的ajax //Ajaxvar xhr;if(window.XMLHttpRequest){ //除IE外的浏览器xhr new XMLHttpRequest()}else{xhr new ActiveXObject("Microsoft.XMLHTTP"); //IE}xhr.open(get,http://demo_get.asp,true); //三个参数&#xff0c;method&#xff0c;…

LeetCode 1910. 删除一个字符串中所有出现的给定子字符串

文章目录1. 题目2. 解题1. 题目 给你两个字符串 s 和 part &#xff0c;请你对 s 反复执行以下操作直到 所有 子字符串 part 都被删除&#xff1a; 找到 s 中 最左边 的子字符串 part &#xff0c;并将它从 s 中删除。 请你返回从 s 中删除所有 part 子字符串以后得到的剩余…