当前位置: 首页 > news >正文

Java——岛屿数量

题目链接

leetcode在线oj题——岛屿数量

题目描述

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

题目示例

输入:grid = [
[“1”,“1”,“1”,“1”,“0”],
[“1”,“1”,“0”,“1”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“0”,“0”,“0”]
]
输出:1

输入:grid = [
[“1”,“1”,“0”,“0”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“1”,“0”,“0”],
[“0”,“0”,“0”,“1”,“1”]
]
输出:3

题目提示

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 300
  • grid[i][j] 的值为 ‘0’ 或 ‘1’

解题思路

定义一个isUsed数组,记录遍历过的位置

使用深度优先搜索,将与一个位置连接的所有“1”都记录为以遍历,最后统计总数即可

定义一个DFS方法,参数分别是:grid数组,行数,列数,当前所在行,当前所在列,isUsed数组

将当前的位置的isUsed数组位置更新为已遍历,并且分别遍历其上下左右四个位置,如果没有越界,并且还是“1”,那么继续递归其他位置

代码

class Solution {int[][] nextPosition = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};void DFS(char[][] grid, int row, int col, int curX, int curY, boolean[][] isUsed){isUsed[curX][curY] = true;//确定下一个位置for (int i = 0; i < 4; i++) {int newX = curX + nextPosition[i][0];int newY = curY + nextPosition[i][1];//判断是否越界if(newX >= row || newX < 0 || newY >= col || newY < 0){continue;}if(grid[newX][newY] == '1' && !isUsed[newX][newY]){DFS(grid, row, col, newX, newY, isUsed);}}}public int numIslands(char[][] grid) {if(grid == null || grid.length == 0){return 0;}int row = grid.length;int col = grid[0].length;boolean[][] isUsed = new boolean[row][col];int num = 0;for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if(grid[i][j] == '1' && !isUsed[i][j]){num++;DFS(grid, row, col, i, j, isUsed);}}}return num;}
}
http://www.lryc.cn/news/26172.html

相关文章:

  • 《代码整洁之道》笔记
  • 个人网站如何集成QQ快捷登录功能?
  • 从工厂打螺丝到月薪18k测试工程师,我该满足吗?
  • 【相关分析-高阶绘图】MATLAB实现皮尔逊相关分析-散点直方图
  • Spark性能优化二 Shuffle机制分析
  • 软测入门(四)Appium-APP移动测试基础
  • 华为OD机试用Python实现 -【集五福】 |老题且简单
  • Typro使用以及安装教程来啦
  • 武汉凯迪正大KD305系列智能数字绝缘电阻测试仪
  • 如何使用码匠连接 Redis
  • 防止网络攻击的10大网络安全措施
  • LeetCode 面试题 05.02. 二进制数转字符串
  • [MatLab]图像绘制
  • datax导入到hive的数据量翻倍
  • 拿下3个大厂offer的软件测试面试宝典,面试一文搞定
  • 长短记忆神经网络(LSTM,Long Short-Term Memory)
  • Makefile学习2
  • 【字符串】leetcode28. 实现 strStr()(C/C++/Java/Python/Js)
  • 游戏开发是个“坑”,而且是个“天坑”
  • 剑指 Offer 64. 求 1 + 2 + … + n(java解题)
  • 2022 年度_职业项目总结_Java技术点归纳
  • 【项目实战】32G的电脑启动IDEA一个后端服务要2min,谁忍的了?
  • 接口自动化面试题汇总(持续更新)
  • SpringBoot实现静态资源映射,登录功能以及访问拦截验证——以黑马瑞吉外卖为例
  • PythonWeb Django PostgreSQL创建Web项目(三)
  • 【Visual Studio】git提交代码时使用GPG
  • 【反序列化漏洞-02】PHP反序列化漏洞实验详解
  • Gateway网关的使用
  • 【LeetCode】背包问题总结
  • Java的开发工具有哪些?这十款工具大厂都在用!