leetcode_day54
本文最后更新于 2024年7月15日 下午
今日内容:
岛屿数量
题目:
给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。
输入描述
第一行包含两个整数 N, M,表示矩阵的行数和列数。
后续 N 行,每行包含 M 个数字,数字为 1 或者 0。
输出描述
输出一个整数,表示岛屿的数量。如果不存在岛屿,则输出 0。
思路:
遍历整个图,如果遇到没走过的1,就计数,并把其相邻的所有1都走一遍,如果遇到走过的1或0就跳过,最后返回计数。
代码
dfs版:
1 |
|
bfs版:
1 |
|
岛屿的最大面积
题目:
给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。
输入描述
第一行包含两个整数 N, M,表示矩阵的行数和列数。后续 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。
输出描述
输出一个整数,表示岛屿的最大面积。如果不存在岛屿,则输出 0。
思路:
采用和上一道题相同的思路,只是不计数岛屿数量,改为在遍历岛屿时计数面积(格子数),从中选出一个最大的面积返回。
代码
dfs版:
1 |
|
小结&注意
在bfs时,入队即为走过,需要立即将其状态visited置位,否则会重复遍历超时。
leetcode_day54
https://novelyear.github.io/2024/07/15/leetcode-day54/