LeetCode 1992. 找到所有的农场组(BFS)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个下标从 0 开始,大小为 m x n 的二进制矩阵 land ,其中 0 表示一单位的森林土地,1 表示一单位的农场土地。

为了让农场保持有序,农场土地之间以矩形的 农场组 的形式存在。
每一个农场组都 仅 包含农场土地。且题目保证不会有两个农场组相邻,也就是说一个农场组中的任何一块土地都 不会 与另一个农场组的任何一块土地在四个方向上相邻。

land 可以用坐标系统表示,其中 land 左上角坐标为 (0, 0) ,右下角坐标为 (m-1, n-1) 。
请你找到所有 农场组 最左上角和最右下角的坐标。
一个左上角坐标为 (r1, c1) 且右下角坐标为 (r2, c2) 的 农场组 用长度为 4 的数组 [r1, c1, r2, c2] 表示。

请你返回一个二维数组,它包含若干个长度为 4 的子数组,每个子数组表示 land 中的一个 农场组 。
如果没有任何农场组,请你返回一个空数组。可以以 任意顺序 返回所有农场组。

示例 1:
在这里插入图片描述

输入:land = [[1,0,0],[0,1,1],[0,1,1]]
输出:[[0,0,0,0],[1,1,2,2]]
解释:
第一个农场组的左上角为 land[0][0] ,右下角为 land[0][0] 。
第二个农场组的左上角为 land[1][1] ,右下角为 land[2][2]

示例 2:
在这里插入图片描述

输入:land = [[1,1],[1,1]]
输出:[[0,0,1,1]]
解释:
第一个农场组左上角为 land[0][0] ,右下角为 land[1][1]

示例 3:
在这里插入图片描述

输入:land = [[0]]
输出:[]
解释:
没有任何农场组。提示:
m == land.length
n == land[i].length
1 <= m, n <= 300
land 只包含 01 。
农场组都是 矩形 的形状。

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

2. 解题

  • BFS,广度优先搜索,DFS也可以
class Solution {
public:vector<vector<int>> findFarmland(vector<vector<int>>& land) {int m = land.size(), n = land[0].size(), k = 300;queue<int> q;vector<vector<int>> ans;vector<vector<int>> dir = {{0,1},{1,0},{-1,0},{0,-1}};for(int i = 0; i < m; ++i){for(int j = 0; j < n; ++j){if(land[i][j] == 1){vector<int> pos = {i,j,i,j};q.push(i*k+j);land[i][j] = 0; // 访问过了while(!q.empty()){int num = q.front();int x = num/k;int y = num%k;q.pop();pos[0] = min(pos[0], x);pos[1] = min(pos[1], y);pos[2] = max(pos[2], x);pos[3] = max(pos[3], y);for(int d = 0; d < 4; ++d){int nx = x + dir[d][0];int ny = y + dir[d][1];if(nx>=0 && nx < m && ny>=0 && ny<n && land[nx][ny]){land[nx][ny] = 0;q.push(nx*k+ny);}}}ans.push_back(pos);}}}return ans;}
};

156 ms 60.9 MB C++


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

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

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

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

相关文章

flash html5 chrome,为了支持 HTML5 ,谷歌 Chrome 浏览器将“封杀”Flash

关于谷歌 Chrome 将不再支持 Flash 的话题&#xff0c;已经争论了很长一段时间了。不过现在&#xff0c;这家互联网巨头终于确认&#xff0c;为了支持 HTML5&#xff0c;Chrome 浏览器将不再运行 Flash。据谷歌表示&#xff0c;由于 Flash 会减慢网页浏览速度并可能引发信息安全…

VS2015开发Android,自带模拟器无法调试、加载程序,算是坑吗

VS2015出来后&#xff0c;确定变化很大&#xff0c;什么android、ios的&#xff0c;不在话下。对于我这样传统型的人&#xff0c;也第一时间试用了一下&#xff08;vs2003->vs2008->vs2012->vs2015&#xff09;。以前用eclipse开发过android小程序&#xff0c;现在想试…

amd cpu 安卓模拟器_夜神模拟器常见问题解答_v20201025

MAC版本常见问题Mac版本模拟器常见问题MAC模拟器出现“您应该将它移到废纸篓”解决办法MAC版本模拟器功能介绍MAC版本模拟器界面Mac版模拟器可能无法启动(卡99%)的原因及解决方式其他问题如何在夜神模拟器中安装自己想要的游戏/应用Sample CA 2证书没网解决办法GlobalSignature…

LeetCode 502. IPO(优先队列)

文章目录1. 题目2. 解题1. 题目 假设 力扣&#xff08;LeetCode&#xff09;即将开始 IPO 。 为了以更高的价格将股票卖给风险投资公司&#xff0c;力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限&#xff0c;它只能在 IPO 之前完成最多 k 个不同的项目。 帮助…

计算机水平考试ppt试卷,计算机等级考试一级笔试卷库.ppt

计算机等级考试一级笔试卷库计算机等级考试一级笔试题库 全国计算机等级考试一级题库 1&#xff0e;微机中1K字节表示的二进制位数是( )。? A、1000 B、8x 1000 C、1024 D、8x1024?? 2&#xff0e;计算机硬件能直接识别和执行的只有( )。 A、高级语言 B、符号语言 C、汇编语…

mysql中ibatis的limit动态传参

param.put("pageNo",pageNo); param.put("pageSize",pageSize); sqlMap中的用法 limit ${pageNo},${pageSize} 我今天在敲代码的时候这么用结果就报错了:limit #pageNo#,#pageSize# 后来查资料才知道 limit 后面不应该用#&#xff08;我传进来的是Intege…

牛客网软通动力软件测试机试_软通动力软件测试笔试题

.;.1&#xff0e;软件测试是软件开发的重要环节&#xff0c;进行软件测试的目的是()A)证明软件错误不存在B)证明软件错误的存在C)改正程序所有的错误D)发现程序所有的错误2&#xff0e;对于软件质量描述不正确的是&#xff1a;()A)高质量的过程产生高质量的产品B)软件质量是测试…

公安计算机技能测试题库,2018公安文职考试题库:行政职业能力测验

【导语】中公重庆招警考试网为大家带来公安文职考试练习题&#xff1a;行政职业能力测验&#xff0c;帮助各位考生顺利备考公安文职考试笔试。1.美国中央情报局和国家保安局根据计算机专家提供的数据&#xff0c;已充分认识到军用电子系统的一个致命弱点——容易遭到计算机病毒…

OpenGL于MFC使用汇总(三)——离屏渲染

有时直接创建OpenGL形式不适合&#xff0c;或者干脆不同意然后创建一个表单&#xff0c;正如我现在这个项目&#xff0c;创建窗体不显示&#xff0c;它仅限于主框架。而我只是ActiveX里做一些相关工作&#xff0c;那仅仅能用到OpenGL的离屏渲染技术了~即不直接绘制到窗体上&…

python 动态属性和特性

文章目录1. 使用动态属性转换数据2. property2.1 help() 文档3. 特性工厂函数4. 属性删除操作5. 处理属性的重要属性和函数5.1 处理属性的内置函数5.2 处理属性的特殊方法learn from 《流畅的python》 1. 使用动态属性转换数据 在 Python 中&#xff0c;数据的属性和处理数据…

bash 不是内部或外部命令_Win10_cmd下提示:‘xxx’不是内部或外部命令,也不是可运行的程序 或批处理文件...

一、windows下命令行查看ip: win+R,调出【运行】,输入cmd,回车打开终端,输入ipconfig,查看成功: 二、可能出现的问题: ping 不是内部或外部命令,也不是可运行的程序或批处理文件。 ipconfig 不是内部或外部命令,也不是可运行的程序或批处理文件。 解决: 1、控制面板…

python 属性描述符

文章目录1. 描述符示例&#xff1a;验证属性2. 自动获取储存属性的名称3. 继承改进4. 覆盖型与非覆盖型描述符对比4.1 覆盖型描述符4.2 没有 __get__ 方法的覆盖型描述符4.3 非覆盖型描述符4.4 在类中覆盖描述符5. 描述符用法建议learn from 《流畅的python》 1. 描述符示例&a…

计算机声音与视频教程,电脑怎么录屏幕视频带声音 电脑录屏幕视频带声音教程...

电脑怎么录屏幕视频带声音&#xff0c;相信有许多的用户在工作上或者学习上也会有这种需求&#xff0c;自己对此也还是不太的了解&#xff0c;毕竟也是没有怎么使用过&#xff0c;对此也是想要知道这电脑怎么录屏幕视频带声音&#xff0c;其实也是有几个原因&#xff0c;下面就…

tensor转换为图片_为大家介绍图片转换pdf的经验总结!你找对方法了吗?

图片转换pdf怎么做&#xff1f;不少朋友们在学习和工作中都发现了PDF这种文件格式似乎格外的吃香&#xff0c;你收到的很多培训文件和在网上搜罗的一些学习文件&#xff0c;全部都是PDF格式&#xff0c;PDF格式这么吃香&#xff1f;甚至有人让你把图片都转成PDF格式&#xff0c…

LeetCode 2021 力扣杯全国秋季编程大赛(第384名)

文章目录1. 无人机方阵2. 心算挑战3. 黑白翻转棋4. 玩具套圈5. 十字路口的交通2021.9.11&#xff0c;周六比赛之前&#xff1a;早上去交大看看&#xff0c;本科毕业10年了&#xff0c;由于限流&#xff0c;校园里没有多少回校的校友。逛了逛&#xff0c;跟太太和的她的同学一起…

URAL 2047 Maths 打表 递推

MathsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid87157#problem/B Description Android Vasya attends Maths classes. His group started to study the number theory recently. The teacher gave them severa…

java 画笔跟swing组件_Java学习教程(基础)--Java版本历史(二)

Java语言自JDK1.0版本以来经历了许多次更新&#xff0c;也在基本程序库中增加了大量的类别和包。从J2SE 1.4开始&#xff0c;Java语言的变动由 Java Community Process&#xff08;JCP&#xff09;管理&#xff0c;JCP使用Java规范请求&#xff08;Java Specification Requests…

计算机网络路由选择协议,IP路由选择协议原理和作用

IP路由选择协议原理和作用(2008-10-20 19:26:17)标签&#xff1a;杂谈IP路由选择如果目的主机与源主机直接相连或都在一个共享网络上,那就直接把包发送到目的主机,如果不是,那把ip数据报送到默认路由器,由它转发路由器使用路由表保存自己知道的网络的信息,它包括:目的IP地址,它…

LeetCode 2000. 反转单词前缀

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 word 和一个字符 ch 。 找出 ch 第一次出现的下标 i &#xff0c;反转 word 中从下标 0 开始、直到下标 i 结束&#xff08;含下标 i &#xff09;的那段字符。 如果 word 中不存在字符 ch &#xff0c;则无需进…

oss图片跨域问题_图片存储解决方案-阿里云对象存储

开通对象存储OSS1. 打开阿里云官网&#xff0c;选择产品对象存储 OSS 2.开通对象存储OSS 需要支付宝扫码登录3.进入管理控制台 4.新建存储空间 5.跨域资源共享(CORS)的设置管理文件整合Springboot实现图片上传服务端签名直传并设置上传回调 : 在服务端完成签名&#xff0c;并且…