LeetCode 695. 岛屿的最大面积(图的BFS/DFS)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 BFS广度优先搜索
      • 2.2 DFS深度优先搜索

1. 题目

给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。

找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)

示例 1:
[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
对于上面这个给定矩阵应返回 6。注意答案不应该是11,因为岛屿只能包含水平或垂直的四个方向的‘1’。示例 2:
[[0,0,0,0,0,0,0,0]]
对于上面这个给定的矩阵, 返回 0。
注意: 给定的矩阵grid 的长度和宽度都不超过 50

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

2. 解题

  • 简单的题目
  • 图的广度或者深度优先搜索
  • visited数组访问标记—> 直接在地图上改数据为0

2.1 BFS广度优先搜索

class Solution {int maxS = 0;int m, n;vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};
public:int maxAreaOfIsland(vector<vector<int>>& grid) {int curS = 0, i, j, i0, j0, k, x, y;m = grid.size(), n = grid[0].size();queue<pair<int,int>> q;for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if(grid[i][j])// == 1{q.push({i,j});curS = 1;//当前面积为1grid[i][j] = 0;//访问过了while(!q.empty()){i0 = q.front().first;j0 = q.front().second;q.pop();for(k = 0; k < 4; ++k){x = i0+dir[k][0];y = j0+dir[k][1];if(x>=0 && x<m && y>=0 && y<n && grid[x][y]){q.push({x,y});grid[x][y] = 0;//访问过了curS++;}}}if(curS > maxS)maxS = curS;}}}return maxS;}
};

在这里插入图片描述

2.2 DFS深度优先搜索

class Solution {int maxS = 0;int m, n;vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};
public:int maxAreaOfIsland(vector<vector<int>>& grid) {int curS = 0, i, j;m = grid.size(), n = grid[0].size();for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if(grid[i][j])// == 1{curS = 1;//当前面积为1grid[i][j] = 0;//访问过了dfs(grid,i,j,curS);if(curS > maxS)maxS = curS;}}}return maxS;}void dfs(vector<vector<int>>& grid, int i, int j, int &curS){int x, y, k;for(k = 0; k < 4; ++k){x = i+dir[k][0];y = j+dir[k][1];if(x>=0 && x<m && y>=0 && y<n && grid[x][y]){grid[x][y] = 0;//访问过了curS++;dfs(grid,x,y,curS);}}}
};

在这里插入图片描述

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

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

相关文章

Neo4j:入门基础(一)之安装与使用

原文链接&#xff1a;https://blog.csdn.net/sinat_36226553/article/details/108541370 # 图数据库 链接&#xff1a;什么是原生(Native)图数据库 一般认为具有“无索引邻接”特性的图数据库才称为原生图数据库 链接&#xff1a;常用的图数据库 图存储可以分为属性图、三元组…

论文浅尝 | 问题多样性对于问答的帮助

笔记整理 | 毕胜 东南大学在读博士&#xff0c;研究方向&#xff1a;自然语言处理 知识图谱问题生成通过生成一些合成的问题作为训练语料有效提高了问答系统的效果&#xff0c;本文的研究点是&#xff1a;在QG中&#xff0c;生成问题的文本多样性是否对下游的QA有帮助&#xf…

RDS平台介绍

本文整理自美团点评技术沙龙第10期&#xff1a;数据库技术架构与实践。 美团点评技术沙龙由美团点评技术团队主办&#xff0c;每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验&#xff0c;覆盖各主要技术领域。 本次沙龙主要围绕数据库相关的主题&#…

你已经是一个成熟的地图了,该学会帮我...

文 | 小戏当我们打开百度地图&#xff0c;选定到达目的地&#xff0c;导航软件里的小姐姐马上就用不紧不慢的语调告诉我们“准备出发&#xff0c;全程12公里&#xff0c;预计需要30分钟……”但一看手表上显示的不风驰电掣铁定迟到的时间&#xff0c;肯定不允许我们和导航软件里…

LeetCode 427. 建立四叉树(递归)

1. 题目 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络。网络中每一格的值只会是真或假。树的根结点代表整个网络。对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的. 每个结点还有另外两个布尔变量: isLeaf 和 val。isLeaf 当这个节点是一个叶子…

基于 KIF 的 iOS UI 自动化测试和持续集成

客户端 UI 自动化测试是大多数测试团队的研究重点&#xff0c;本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程。 一、测试框架的选择 iOS UI 自动化测试框架有不少&#xff0c;其中 UI Automation 是 Apple 早期提供的 UI 自动化测试解决…

论文浅尝 | 利用冻结语言模型的多模态少样本学习

笔记整理 | 李磊&#xff0c;浙江大学硕士&#xff0c;研究方向为自然语言处理链接&#xff1a;https://arxiv.org/abs/2106.13884动机大规模的自回归语言模型&#xff08;如GPT&#xff09;在预训练阶段学习到了大量的知识&#xff0c;具有很好的学习新任务的能力&#xff0c…

ACL’21 | 对话系统也要进军多模态了!

文 | 胡煌&#xff0c;梁祖杰编 | 小轶对于一个对话Bot来讲&#xff0c;拥有对视觉信息的感知和联想能力是非常重要的。比如&#xff0c;我们人类在对话中谈到大海的时候&#xff0c;就会自然地联想到蓝天、白云和飞翔的海鸟。然而&#xff0c;当前的对话模型&#xff0c;如 Me…

x86系统与arm64系统不兼容的linux服务器问题

一键离线安装命令&#xff1a; pip install --no-index --find-links/home/digital_package -r requirements.txt --ignore-installed 1 cython 2 gensim&#xff1a;

LeetCode 541. 反转字符串 II

1. 题目 给定一个字符串和一个整数 k&#xff0c;你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符&#xff0c;则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符&#xff0c;则反转前 k 个字符&#xff0c;并将剩余的字符保…

HDFS NameNode内存全景

一、概述 从整个HDFS系统架构上看&#xff0c;NameNode是其中最重要、最复杂也是最容易出现问题的地方&#xff0c;而且一旦NameNode出现故障&#xff0c;整个Hadoop集群就将处于不可服务的状态&#xff0c;同时随着数据规模和集群规模地持续增长&#xff0c;很多小量级时被隐藏…

OpenKG开源系列|首个多模态开放知识图谱OpenRichpedia (东南大学)

OpenKG地址&#xff1a;http://openkg.cn/dataset/richpeidaGitHub地址&#xff1a;https://github.com/OpenKG-ORG/OpenRichpediaGitee地址&#xff1a;https://gitee.com/openkg/richpedia官网地址&#xff1a;http://richpedia.cn&#xff08;提供Dump&#xff09;开放许可协…

电商业务中的五大机器学习问题!

机器学习正在从曾经的“科幻”&#xff0c;走向大众生活&#xff0c;比如&#xff1a;高铁站的人脸识别系统、小区门口的无人化测量体温&#xff0c;还有这些年很火的自动驾驶&#xff0c;再到电商的精准推荐系统...等等&#xff0c;背后都是机器学习。今天就以电商业务场景为例…

LeetCode 404. 左叶子之和(递归)

1. 题目 计算给定二叉树的所有左叶子之和。 示例&#xff1a;3/ \9 20/ \15 7在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 24来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode-cn.co…

论文浅尝 | 将结构预测作为增广自然语言间的翻译任务

笔记整理 | 叶宏彬&#xff0c;浙江大学计算机博士生论文地址&#xff1a;https://openreview.net/pdf?idUS-TP-xnXI摘要&#xff1a;我们提出了一个新的框架&#xff0c;即增强自然语言之间的翻译&#xff08;Translation-between-Augmented Natural Languages&#xff0c;TA…

ReactiveCocoa中潜在的内存泄漏及解决方案

ReactiveCocoa是GitHub开源的一个函数响应式编程框架&#xff0c;目前在美团App中大量使用。用过它的人都知道很好用&#xff0c;也确实为我们的生活带来了很多便利&#xff0c;特别是跟MVVM模式结合使用&#xff0c;更是如鱼得水。不过刚开始使用的时候&#xff0c;可能容易疏…

EXCEL如何快速拆分合并单元格数据

EXCEL如何快速拆分合并单元格数据

学完文本知识,我就直接看懂图片了!

文 | Yimin_饭煲2020年, OpenAI的大作GPT-3 (Language Models are few shot learners) 横空出世&#xff0c;震惊整个NLP/AI圈。大家在惊叹于GPT-3 1750B参数的壕无人性同时&#xff0c;想必对GPT-3中的Prompt方法印象深刻。简单来说&#xff0c;(GPT-3中的)Prompt就是为输入的…

LeetCode 914. 卡牌分组(最大公约数)

1. 题目 给定一副牌&#xff0c;每张牌上都写着一个整数。 此时&#xff0c;你需要选定一个数字 X&#xff0c;使我们可以将整副牌按下述规则分成 1 组或更多组&#xff1a; 每组都有 X 张牌。 组内所有的牌上都写着相同的整数。 仅当你可选的 X > 2 时返回 true。 示例…

RestQL:现代化的 API 开发方式

koa-restql 已经在 github 开源并在 npm 发布。感兴趣的同学可以前往围观一下。欢迎 Pull Request&#xff0c;同时热烈欢迎 Star。 在现代的业务系统中&#xff0c;后端开发工作基本上可以被拆分为三项&#xff1a; 接口鉴权。例如判断是不是当前系统的用户&#xff0c;以及该…