leetcode 岛屿的个数

给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:
11110
11010
11000
00000输出: 1

示例 2:

输入:
11000
11000
00100
00011输出: 3

题目分析:有字符‘0’代表水,‘1’代表陆地,岛屿指的是一个或者一片陆地相邻形成的区域,所以题目要求的岛屿个数,实际上求的是所有不相邻的1的个数,相邻指的是上下左右。理解了题目的意思,那么这一题我们很明显可以利用广度优先遍历法来实现这个问题。

代码分析:我们需要定义一个数组visited来判断当前的元素是否已经被访问了,如果被访问了则为true,如果没有被访问则为false. 那么我们判断当前元素是否为1,如果为1,则看它的相邻位置是否为‘1’,一直到把所有连通域里面的‘1’访问结束后,res++。

class Solution {
public:int numIslands(vector<vector<char> > &grid) {if(grid.empty()||grid[0].empty()) return 0;int row=grid.size();int col=grid[0].size();int res=0;vector<vector<bool>>visited(row,vector<bool>(col,false)); //初始化visited数组为falsefor(int i=0;i<row;i++){for(int j=0;j<col;j++){if(grid[i][j]==1&&!visited){numIslandsDFS(grid,visited,i,j);res++;}}}return  res;
}numIslandsDFS(vector<vector<char>&grid, vector<bool> visited, int x,int y){if(x<0||x>grid.size()) return;if(y<0||y>grid[0].size()) return;if(grid[x][y]!=1||visited) return;visited[x][y]=true;numsIslandDFS(grid, visited,x-1,y);numsIslandDFS(grid, visited,x+1,y);numsIslandDFS(grid, visited,x,y-1);numsIslandDFS(grid, visited,x,y+1);
}
};

 

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

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

相关文章

.NET Core前后端分离快速开发框架(Core.3.0+AntdVue)

时间真快&#xff0c;转眼今年又要过去了。回想今年&#xff0c;依次开源发布了Colder.Fx.Net.AdminLTE(254Star)、Colder.Fx.Core.AdminLTE(335Star)、DotNettySocket(82Star)、IdHelper(47Star)&#xff0c;这些框架及组件都是本着以实际出发&#xff0c;实事求是的态度&…

leetcode 两数相加

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储&#xff0c;它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数字都不会以零开头。 示例&#xff1a; 输入&#xff1a;(2 -> 4 -> 3) (5 ->…

.Net开发3年,应聘大厂惨遭淘汰,如何翻身打脸面试官?

(设计师忘记了&#xff0c;这里还有个双十一福利课&#xff0c;还能1元秒杀&#xff01;)

leetcode 无重复字符的最长子串

给定一个字符串&#xff0c;找出不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc"&#xff0c;其长度为 3。示例 2: 输入: "bbbbb" 输出: 1 解释: 无重复字符的最长子串是 "b&q…

面对金九银十铜十一你真的准备好了吗?

作者&#xff1a;回首笑人间&#xff0c;高级Java工程师一枚&#xff0c;热爱研究开源技术&#xff0c;架构师社区合伙人&#xff01;前言&#xff1a;又是一年一度的金九银十跳槽季&#xff0c;回首在经历了半个月的求职奔波后&#xff0c;终于又能安稳的静下心来敲代码了&…

深入理解二叉搜索树

什么是二叉搜索树&#xff1f; 顾名思义&#xff0c;一颗二叉搜索树是基于二叉树来组织的&#xff0c;它包括许多动态集合操作&#xff08;Search&#xff0c;MiniNum, MaxiNum, Prodecessor, Successor, Insert 和Delete等&#xff09;。二叉搜索树上的基本操作所花费的时间与…

深入理解堆(最大堆,最小堆及堆排序)

基本概念&#xff1a; 1、完全二叉树&#xff1a;若二叉树的深度为h&#xff0c;则除第h层外&#xff0c;其他层的结点全部达到最大值&#xff0c;且第h层的所有结点都集中在左子树。 2、满二叉树&#xff1a;满二叉树是一种特殊的的完全二叉树&#xff0c;所有层的结点都是最…

区块链的实质与真伪

2019年11月03日&#xff0c;应邀在微信群未名大学堂进行了区块链技术及应用的音频讲座。里面提到了区块链技术的原型与起源等内容&#xff0c;当时群内的介绍信息如下&#xff08;仅供参考&#xff09;&#xff1a;未名大学堂首期讲座讲座题目&#xff1a;区块链技术和应用浅析…

H.266/VVC

Versatile Video Coding (VVC) 相关网址 https://jvet.hhi.fraunhofer.de/svn/svn_VVCSoftware_VTM/ https://jvet.hhi.fraunhofer.de/ http://phenix.it-sudparis.eu/jvet/

王炸吐血整理60个Redis面试题,全网最全了

1.Redis 是一个基于内存的高性能key-value数据库。 2.Redis相比memcached有哪些优势&#xff1a; memcached所有的值均是简单的字符串&#xff0c;redis作为其替代者&#xff0c;支持更为丰富的数据类型redis的速度比memcached快很多redis可以持久化其数据3.Redis是单线程 redi…

H.266 参考软件VTM下载和安装

1、下载安装cmake &#xff0c;下载地址https://cmake.org/。 安装后打开控制面板-系统-高级系统设置-环境变量-PATH-编辑-输入cmake.exe的路径即可。 2、如果你之前&#xff08;HEVC&#xff09;时已经下载好了SVN&#xff0c;直接在桌面点击右键SVNcheckout&#xff0c;出来…

VTM编码结构框架

VTM流程差不多就是这样子的啦&#xff0c;后续会继续补充&#xff0c;由于能力有限&#xff0c;如有错误&#xff0c;欢迎指正。在后面会进一步分析每一个函数&#xff0c;并分析流程的细节。

AspNetCore应用注意这一点,CTO会对你刮目相看

背景已经有很多文章记录了Web程序中采用异步编程的优势和.Net异步编程的用法&#xff0c; 异步编程虽然不能解决查询数据库的瓶颈&#xff0c; 但是利用线程切换&#xff0c;能最大限度的弹性利用工作线程&#xff0c; 提高了web服务的响应能力。????9012年了&#xff0c;再…

python 字符串总结

1str1 hello, world!# 通过len函数计算字符串的长度print(len(str1)) # 13# 获得字符串首字母大写的拷贝print(str1.capitalize()) # Hello, world!# 获得字符串变大写后的拷贝print(str1.upper()) # HELLO, WORLD!# 从字符串中查找子串所在位置print(str1.find(or)) # 8p…

ASP.NET Core如何限制请求频率

ASP.NET Core如何限制请求频率&#xff0c;为了防止恶意请求&#xff0c;我们往往会对接口请求的频率做限制&#xff0c;比如请求间隔&#xff0c;一段时间内请求的次数&#xff0c;针对部分IP做出不同的限制策略如何去限制请求频率不需要我们去实现&#xff0c;用上AspNetCore…

从AppDomain迁移到AssemblyLoadContext

AssemblyLoadContext基本上AssemblyLoadContext是AppDomain的继承者&#xff0c;它提供相同而且更多的功能-除了安全边界&#xff08;隔离&#xff09;。最小的安全边界是进程&#xff0c;因此你将需要使用进程间通信来正确隔离数据和代码执行。官网文档中提到Appdomain已经过时…

大话数据结构学习笔记一:第一章

1.1 基本概念与术语 数据&#xff1a;是描述客观事物的符号&#xff0c;是计算机中可以操作的对象&#xff0c;是能被计算机识别&#xff0c;并输入给计算机处理的符号集合。 数据元素&#xff1a;是组成数据的、有一定意义的基本单位&#xff0c;在计算机中通常作为整体处理…

【.NET Core 3.0】小技巧 || 原生DI一对多注入

本文是一个技巧文章&#xff0c;内容很短&#xff0c;但是被提问的频率很高&#xff0c;所以记录下来&#xff0c;以待大家不时之需。以下的代码&#xff0c;是通过原生的依赖注入来讲解的&#xff0c;其他的第三方框架&#xff0c;可以自己自定义扩展&#xff0c;效果是一样的…

大话数据结构学习笔记二:算法

一 算法定义 算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 二 算法的特性&#xff1a; 1 输入输出&#xff1a;算法具有零个或者多个输入&#xff0c;至少有一个或者多个输出。 2 有穷性&…

python 学习中遇到的问题(持续更新中)

1、定义一个一维数组,然后利用.T进行转置,利用.T[2]求转置后的数组的第二行。 import numpy as npAnp.array([1,2,3,4,5,6,7,8,9,10,11,12]) BA.reshape(3,4) CB.T DB.T[2] >>> B[[1,2,3,4] [5,6,7,8] [9,10,11,12]] C[[1,5,9] [2,6,10] [3,7,11] [4,8,12] D[3,7…