岛屿专题

【代码随想录训练营第42期 续Day52打卡 - 图论Part3 - 卡码网 103. 水流问题 104. 建造最大岛屿

目录 一、做题心得 二、题目与题解 题目一:卡码网 103. 水流问题 题目链接 题解:DFS 题目二:卡码网 104. 建造最大岛屿 题目链接 题解:DFS  三、小结 一、做题心得 也是成功补上昨天的打卡了。 这里继续图论章节,还是选择使用 DFS 来解决这类搜索问题(单纯因为我更熟悉 DFS 一点),今天补卡的是水流问题和岛屿问题。个人感觉这一章节题对于刚

图论篇--代码随想录算法训练营第五十二天打卡| 101. 孤岛的总面积,102. 沉没孤岛,103. 水流问题,104.建造最大岛屿

101. 孤岛的总面积 题目链接:101. 孤岛的总面积 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。 现在你需要计算所有孤岛的总面积,岛屿面积的计算方式为组成岛屿的陆地的总数。 解题思路: 从周边找到陆地,然后通过 dfs或者bfs 将

图论篇--代码随想录算法训练营第五十一天打卡| 99. 岛屿数量(深搜版),99. 岛屿数量(广搜版),100. 岛屿的最大面积

99. 岛屿数量(深搜版) 题目链接:99. 岛屿数量 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 解题思路: 1、每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 2、遇到一个没有遍历过的节点陆地,计数器就加一,然后把该节点陆地所能遍历到的陆地都

秋招突击——算法练习——8/26——图论——200-岛屿数量、994-腐烂的橘子、207-课程表、208-实现Trie

文章目录 引言正文200-岛屿数量个人实现 994、腐烂的橘子个人实现参考实现 207、课程表个人实现参考实现 208、实现Trie前缀树个人实现参考实现 总结 引言 正文 200-岛屿数量 题目链接 个人实现 我靠,这道题居然是腾讯一面的类似题,那道题是计算最大的岛屿面积,如果当时没做出来,现在得哭死!好在做出来了!这道题单纯使用回溯实现的,然后修改一下地图的坐标

Day47 | 110.字符串接龙 105.有向图的完全可达性 106.岛屿的周长

110.字符串接龙 110. 字符串接龙 题目 题目描述 字典 strList 中从字符串 beginStr 和 endStr 的转换序列是一个按下述规格形成的序列:  1. 序列中第一个字符串是 beginStr。 2. 序列中最后一个字符串是 endStr。  3. 每次转换只能改变一个字符。  4. 转换过程中的中间字符串必须是字典 strList 中的字符串,且strLis

代码随想录day53 110. 字符串接龙 105.有向图的完全可达性 106. 岛屿的周长

代码随想录day53 110. 字符串接龙 105.有向图的完全可达性 106. 岛屿的周长 110. 字符串接龙 代码随想录 #include <iostream>#include <vector>#include <unordered_set>#include <unordered_map>#include <queue>using namespace std;int main(

代码随想录算法训练营第 53 天 |卡码网110.字符串接龙 卡码网105.有向图的完全可达性 卡码网106.岛屿的周长

代码随想录算法训练营 Day53 代码随想录算法训练营第 53 天 |卡码网110.字符串接龙 卡码网105.有向图的完全可达性 卡码网106.岛屿的周长 目录 代码随想录算法训练营前言卡码网110.字符串接龙卡码网105.有向图的完全可达性卡码网106.岛屿的周长 一、卡码网110.字符串接龙1.题目链接2.思路3.题解 二、105.有向图的完全可达性1.题目链接2.思路3.题解

代码随想录day52 101孤岛的总面积 102沉没孤岛 103水流问题 104建造最大岛屿

代码随想录day52 101孤岛的总面积 102沉没孤岛 103水流问题 104建造最大岛屿 101孤岛的总面积 代码随想录 #include <iostream>#include <vector>using namespace std;int count = 0;int dir[4][2] = {{1, 0}, {0, 1}, {-1 ,0}, {0, -1}};void dfs(v

Day46 | 101孤岛的总面积 102沉没孤岛 103水流问题 104建造最大岛屿

语言 Java 101.孤岛的总面积 101. 孤岛的总面积 题目 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。 现在你需要计算所有孤岛的总面积,岛屿面积的计算方式为组成岛屿的陆地的总数。 输入描述 第一行包含两个整数 N, M,表示矩

代码随想录算法训练营第 51 天 |LeetCode99岛屿数量 LeetCode100.岛屿的最大面积

代码随想录算法训练营 Day51 代码随想录算法训练营第 51 天 |LeetCode99岛屿数量 LeetCode100.岛屿的最大面积 目录 代码随想录算法训练营前言LeetCode200 岛屿数量LCR 105. 岛屿的最大面积 一、广度优先搜索基础1、用队列实现2、代码框架: 二、卡码网99岛屿数量(LeetCode200 岛屿数量 )1.题目链接2.思路3.题解 三、LC

代码随想录算法训练营第53天| 图论 101.孤岛的总面积 102.沉没孤岛 、103.水流问题 、104.建造最大岛屿

101.孤岛的总面积   题目链接:101.孤岛的总面积   思路:采用了深搜和一个布尔函数判断是否为陆地,是陆地在后期不参与统计面积 代码: #include<iostream>using namespace std;#include<vector>//#include<bool>//多加一个是否碰到边缘函数//深搜vector<vector<int>> mov={{0,-1,

Day45 | 99.岛屿数量 深搜 广搜 100.岛屿的最大面积

语言 Java 99.岛屿数量 深搜 广搜 99. 岛屿数量 题目 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输入描述 第一行包含两个整数 N, M,表示矩阵的行数和列数。 后续 N 行,每行包含 M 个数字,数字为 1 或者 0。 输出描述 输出

算法工程师第四十四天(99. 岛屿数量 深搜 99. 岛屿数量 广搜 100.岛屿的最大面积 )

参考文献 代码随想录 一、岛屿数量 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输入描述 第一行包含两个整数 N, M,表示矩阵的行数和列数。 后续 N 行,每行包含 M 个数字,数字为 1 或者 0。 输出描述 输出一个整数,表示岛屿的数量。如果不存在岛

代码随想录算法训练营第五十三天 | 101. 孤岛的总面积、102. 沉没孤岛、 103. 水流问题、 104. 建造最大岛屿

一、101. 孤岛的总面积 题目链接:101. 孤岛的总面积 (kamacoder.com) 文章链接:代码随想录 (programmercarl.com)——101. 孤岛的总面积 二、102. 沉没孤岛 题目链接:102. 沉没孤岛 (kamacoder.com) 文章链接:代码随想录 (programmercarl.com)——102. 沉没孤岛 三、 103.

算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码网106 岛屿的周长

卡码网110 字符串接龙 这题一开始用的邻接表+dfs,不幸超时 #include <iostream>#include <list>#include <string>#include <vector>using namespace std;int minLen = 501;bool count(string a, string b) {int num = 0;for (int i

算法训练营day66-孤岛总面积-沉没孤岛-水流问题-建造最大岛屿

题目1:101. 孤岛的总面积 (kamacoder.com) #include <iostream>#include <vector>#include <queue>using namespace std;int dir[4][2] = {0,-1,-1,0,0,1,1,0};int count = 0;void bfs(vector<vector<int>>& map, vect

代码随想录算法训练营第六十六天 |101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿

101.孤岛的总面积 文字讲解:101. 孤岛的总面积 | 代码随想录 解题思路 本题要求找到不靠边的陆地面积,那么我们只要从周边找到陆地然后 通过 dfs或者bfs 将周边靠陆地且相邻的陆地都变成海洋,然后再去重新遍历地图 统计此时还剩下的陆地就可以了。 在遇到地图周边陆地的时候,将1都变为0,此时地图为这样:  这里使用深搜 #include<bits/stdc++.h>us

深度遍历-求“岛屿数量”

一、问题描述 二、解题思路 1.设置一个对应的boolean二维数组 isfind[][] ,用来标记已经遍历过的“岛屿” 2.使用双层循环遍历岛屿(grid)二维数组,当遇到 isfind[i][j]=false 时表示遇到一个新岛屿 3.当遇到新岛屿时进行深度递归遍历,向左、向上、向下、向右尝试“走动”,当新的 i,j位置 满足:         (1) i、j满足二维数组的

岛屿的最大面积(剑指Offer) -Java实现

文章目录 思路解题方法复杂度Code Problem: LCR 105. 岛屿的最大面积 思路 本题中说的是一个网格的岛屿,获取其中的岛屿的最大面积,是典型的图论的问题,可以采用广度优先搜索算法和深度优先算法,本文采用广度优先搜索算法 解题方法 ① 定义已经访问过的岛屿的二维布尔数组 ② 两层循环遍历网格,即第一层(最外层)循环是网格的行,第二层(最内层)循环是网格的列

力扣200. 岛屿数量(BFS)

Problem: 200. 岛屿数量 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.定义方向数组:定义一个方向数组 DIRECTIONS,表示上、下、左、右四个方向的移动。 2.获取网格的行数和列数同时初始化一个计数器 numIslands 用于记录岛屿的数量。 3.使用两层循环遍历整个网格,如果遇到一个未访问的陆地 ‘1’,计数器

leetcode79.单词搜索(回溯dfs)、200.岛屿数量

79.单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ [‘A’,‘B’,‘C’,‘E’], [‘S’,‘F’,‘C’,‘S’], [‘A’,‘D’,‘E’,‘E’] ] 给定 word = “ABC

强化训练:day7(字符串中找出连续最长的数字串、岛屿数量、拼三角)

文章目录 前言1. 字符串中找出连续最长的数字串1.1 题目描述1.2 解题思路1.3 代码实现 2. 岛屿数量2.1 题目描述2.2 题目描述2.3 代码实现 3. 拼三角3.1 题目描述3.2 解题思路3.3 代码实现 总结 前言   1. 字符串中找出连续最长的数字串   2. 岛屿数量   3. 拼三角 1. 字符串中找出连续最长的数字串 1.1 题目描述 1.

LeetCode - 200. 岛屿数量

描述 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。   示例 1: 输入:grid = [   ["1","1","1","1","0"],   ["1","1","0","1","0"],   ["1","1","0"

BFS专题——FloodFill算法:200.岛屿数量

文章目录 题目描述算法原理代码实现C++Java 题目描述 题目链接:200.岛屿数量 PS:注意题目中每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。也就是说斜角是不算了, 例如示例二,是三个岛屿。 算法原理 这道题目是 DFS,BFS,并查集,基础题目,因为本博客属于BFS专题,所以只会讲解如何用BFS解决,具体如下: 遍历整个矩阵,每次找到⼀块陆地的时候:

leetcode---岛屿数量

. - 力扣(LeetCode) 代码: //岛屿题目的思想:二维矩阵图的DFS就是,上下左右遍历如果是0或者出界的话就return//规定的是陆地上下左右是水的话它就是岛屿。当遍历矩阵图中每一个点, //在调用递归算法之前结果加1,递归算法每次会把一个岛屿全部淹没 class Solution {public:int numIslands(vector<vector<char>>&

力扣HOT100 - 200. 岛屿数量

解题思路: 岛屿题目一般使用dfs。 1.判断是否越界 2.用0,1,2三个状态标识当前格子的状态(三个状态比两个状态更清晰) 3.向周围四个方向遍历 class Solution {public int numIslands(char[][] grid) {int cnt = 0;for (int i = 0; i < grid.length; i++) {for (int