当前位置: 首页 > 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;}
}

相关文章:

Java——岛屿数量

题目链接 leetcode在线oj题——岛屿数量 题目描述 给你一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相…...

《代码整洁之道》笔记

1章&#xff1a;专业人士要有专业人士素养&#xff0c;要有责任心&#xff0c;编写代码尽可能完善没有bug&#xff0c;有bug也要勇于承担。坚持学习&#xff0c;坚持练习&#xff0c;保证自己的专业技能。谦虚&#xff0c;相互学习&#xff0c;与顾客达成一致2章&#xff1a;说…...

个人网站如何集成QQ快捷登录功能?

目录 一、网站集成QQ快捷登录的好处 二、网站接入QQ快捷登录具体步骤 &#xff08;1&#xff09;登录到QQ互联官网 &#xff08;2&#xff09;进行个人开发者认证 &#xff08;3&#xff09;创建网站应用 &#xff08;4&#xff09;填写网站资料 三、如何在本地开发环境…...

从工厂打螺丝到月薪18k测试工程师,我该满足吗?

以前我比较喜欢小米那句“永远相信美好的事情即将发生”&#xff0c;后来发现如果不努力不可能有美好的事情发生&#xff01;01高中毕业进厂5年&#xff0c;创业经商多次战败&#xff0c;为了生计辗转奔波高中毕业后我就进了工厂&#xff0c;第一份工作是做模具加工。从500元一…...

【相关分析-高阶绘图】MATLAB实现皮尔逊相关分析-散点直方图

虽然皮尔逊相关分析很常见,但如何更好的展现相关性、散点分布、柱状分布,以提升研究结果的美感和冲击感呢?本文拟通过MATLAB绘制包含散点分布、柱状分布、线性展示的散点直方图,有助于审稿人眼前一亮。 1、Pearson相关系数原理 Pearson相关系数(Pearson Correlation Co…...

Spark性能优化二 Shuffle机制分析

&#xff08;一&#xff09; 什么情况下发生shuffle 在MapReduce框架中&#xff0c;Shuffle是连接Map和Reduce之间的桥梁&#xff0c;Map阶段通过shuffle读取数据并输出到对应的Reduce&#xff1b;而Reduce阶段负责从Map端拉取数据并进行计算。在整个shuffle过程中&#xff0c…...

软测入门(四)Appium-APP移动测试基础

Appium 用来测试手机程序。 测试方面&#xff1a; 功能测试安装卸载测试升级测试兼容测试 Android系统版本不同分辨率不同网络 网络切换、中断测试使用中来电话、短信横竖屏切换 环境搭建 Java安装&#xff08;查资料&#xff09;Android SDK安装&#xff0c;配置 HOME和P…...

华为OD机试用Python实现 -【集五福】 |老题且简单

华为OD机试题 最近更新的博客华为 OD 机试 300 题大纲集五福题目描述输入描述输出描述示例一输入输出示例二输入输出代码编写思路Python 代码最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典...

Typro使用以及安装教程来啦

Typora是一款轻便简洁的Markdown编辑器&#xff0c;支持即时渲染技术&#xff0c;这也是与其他Markdown编辑器最显著的区别。即时渲染使得你写Markdown就想是写Word文档一样流畅自如&#xff0c;不像其他编辑器的有编辑栏和显示栏。今天为大家分享下有关Typroa的安装以及使用&a…...

武汉凯迪正大KD305系列智能数字绝缘电阻测试仪

一、概述 KD305系列智能数字绝缘电阻测试仪采用嵌入式工业单片机实时操作系统&#xff0c;数字模拟指针与数字段码显示结合&#xff0c;该系列表具有多种电压输出等级&#xff08;500V、1000V、2500V、5000V、10000V&#xff09;、容量大、抗干扰强、模拟指针与数字同步显示、交…...

如何使用码匠连接 Redis

目录 在码匠中集成 Redis 在码匠中使用 Redis 关于码匠 Redis 是由 Salvatore Sanfilippo 用 C 语言开发的一款开源的、高性能的键值对存储数据库&#xff0c;它采用 BSD 协议&#xff0c;为了适应不同场景下的存储需求&#xff0c;提供了多种键值数据类型。到目前为止&…...

防止网络攻击的10大网络安全措施

网络攻击每天都在发生。事实上,每天有超2000次的攻击是针对连接了互联网且未受保护的系统,大概每39s就会发生一次。网络攻击导致的数据泄露、敏感信息被盗、财务损失、声誉受损都给企业及个人带来威胁。随着各大企业对数字系统的依赖,网络威胁已成为当下面临的主要挑战。 实…...

LeetCode 面试题 05.02. 二进制数转字符串

【LetMeFly】面试题 05.02.二进制数转字符串 力扣题目链接&#xff1a;https://leetcode.cn/problems/bianry-number-to-string-lcci/ 二进制数转字符串。给定一个介于0和1之间的实数&#xff08;如0.72&#xff09;&#xff0c;类型为double&#xff0c;打印它的二进制表达式…...

[MatLab]图像绘制

一、绘制二维图像 1.一张图上绘制一条线 绘制代码如下面所示&#xff1a; x 0:0.01:2*pi; y sin(x); figure %建立幕布 plot(x,y) %绘制图像 %设置图像属性 title(ysin(x)) xlabel(x) ylabel(y)xlim([0 2*pi]) %限制x轴的值域 自定义图线的颜色…...

datax导入到hive的数据量翻倍

现象 mysql->hive 或者oracle->hdfs 源表数据100w 结果hive表数据200w。 这个现象很容易发生&#xff0c;只要你同一时间调度这个json两次。 原因 "writeMode" : "append", "nonconflict","truncate" * append&#xff…...

拿下3个大厂offer的软件测试面试宝典,面试一文搞定

我是谁、工作几年、你上家公司做什么、负责什么、你的优势、为什么适合这个职位、我想做什么、在这个职位上想得到什么 【呕心沥血】耗时7天整理的金三银四必看的软件测试频面试题 涵盖 接口自动化测试框架面试题_哔哩哔哩_bilibili【呕心沥血】耗时7天整理的金三银四必看的软…...

长短记忆神经网络(LSTM,Long Short-Term Memory)

长短记忆神经网络定义 长短记忆神经网络&#xff08;Long-short term memory, LSTM&#xff09;是一种特殊的RNN结构。该神经网络可以有效保留历史信息&#xff0c;实现对文本的长期依赖信息进行学习。 关键问题&#xff1a;控制长期状态信息 解决方法&#xff1a;门控开关 门的…...

Makefile学习2

自动变量和通配符 * 通配符 * 和 % 在Make 中都被称为通配符&#xff0c;但他们的含义完全不同。 * 会在你的文件系统中搜索匹配的文件名。可以在目标&#xff0c;先决条件或 wildcard 函数中使用。 print:$(wildcard *.c)ls -la $?wildcard 作用&#xff1a;在 Makefile 规…...

【字符串】leetcode28. 实现 strStr()(C/C++/Java/Python/Js)

leetcode28. 实现 strStr&#xff08;&#xff09; 1 题目2 KMP2.1 什么是KMP&#xff1f;2.2 KMP有什么用&#xff1f;2.3 什么是前缀表&#xff1f;2.4 最长公共前后缀2.5 为什么一定要用前缀表&#xff1f;2.6 如何计算前缀表2.7 前缀表与next数组2.8 使用next数组来匹配2.9…...

游戏开发是个“坑”,而且是个“天坑”

本文首发于CSDN公众号 作者 | 开发游戏的老王 责编 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 各位游戏开发者大家好&#xff0c;我是开发游戏的老王&#xff0c;一名游戏开发者同时也是一名高校游戏方向的主讲教师&#xff0c;从事游戏开发及相关教…...

Win32下用libigl+GLFW3渲染3D模型的完整配置指南(附常见错误排查)

Win32下用libiglGLFW3渲染3D模型的完整配置指南&#xff08;附常见错误排查&#xff09; 在Windows平台进行3D图形开发时&#xff0c;libigl与GLFW3的组合为开发者提供了强大的工具集。libigl作为一个轻量级的C几何处理库&#xff0c;与GLFW3这一跨平台的OpenGL窗口管理库结合…...

Visual Studio 2019安装Python组件失败?教你手动定位installer目录完成安装

Visual Studio 2019安装Python组件失败的终极解决方案 当你在Visual Studio 2019中尝试安装Python组件时&#xff0c;突然遇到"安装程序不完整"的错误提示&#xff0c;这确实令人沮丧。作为一名长期使用VS进行Python开发的工程师&#xff0c;我完全理解这种中断对工作…...

高密度PCB贴装实战:如何用模块化治具解决0.3mm间距元件定位难题

高密度PCB贴装实战&#xff1a;模块化治具在0.3mm间距元件定位中的创新应用 当智能手表的PCB板面积缩小到指甲盖大小时&#xff0c;上面的0402元件间距已经突破0.3mm极限——这相当于在1元硬币上精准摆放50根头发丝。消费电子微型化浪潮下&#xff0c;传统治具的定位误差正在吞…...

Oracle RAC OCR坏了怎么办?手把手教你用ocrconfig修复与备份(附11g/12c实战命令)

Oracle RAC OCR故障应急指南&#xff1a;从诊断到修复的全链路实战 凌晨三点&#xff0c;当手机铃声划破寂静&#xff0c;作为DBA的你从睡梦中惊醒。电话那头传来运维同事急促的声音&#xff1a;"生产环境RAC集群所有节点突然离线&#xff0c;CRS服务无法启动&#xff01…...

给渗透新手的保姆级指南:用Kali和MSF搞定VulnHub经典靶机DC-1

Kali Linux渗透测试实战&#xff1a;从零攻破VulnHub DC-1靶机 环境准备与靶机配置 在开始渗透测试之前&#xff0c;确保你已经准备好以下工具和环境。Kali Linux作为渗透测试的标准发行版&#xff0c;集成了我们所需的所有工具。DC-1是Vulnhub上一个专为渗透测试练习设计的靶机…...

多模态数字人智能交互平台源码获取方式,支持语音克隆+实时渲染,可商用

温馨提示&#xff1a;文末有资源获取方式最近“龙虾AI”的热度很高&#xff0c;似乎人人都想养一个属于自己的数字员工。但现实是&#xff0c;这类技术对普通用户并不友好&#xff1a;部署需要代码、配置需要专人、调试更是门槛重重。更别提高昂的Token消耗&#xff0c;轻度使用…...

炸穿 2026 技术圈!AI Agent 从 0 到 1 商业落地全攻略,附 Python 可跑源码 + 双场景变现

引言:“AI Agent&#xff1a;程序员效率革命的最后一公里”前言&#xff1a;还在死磕 CRUD、熬夜改 BUG、被重复研发工作榨干精力&#xff1f;2026 年的技术风口早已彻底转向 ——AI Agent&#xff0c;从华为虚拟工程师、蘑菇物联工业智能体&#xff0c;到全行业自动化落地&…...

Ubuntu 24.04镜像源配置全攻略:从原理到实战(含常见报错解决)

Ubuntu 24.04镜像源深度解析与高效配置实战 最近在帮朋友配置新装的Ubuntu 24.04时&#xff0c;发现这个版本在软件源管理上做了重大调整——从传统的sources.list文件变成了结构化更强的sources.d目录配置方式。这个变化让不少习惯了旧版本的用户感到困惑&#xff0c;也让我意…...

APScheduler避坑指南:解决定时任务重复执行和时区问题的5种实战方案

APScheduler生产级实战&#xff1a;彻底解决定时任务重复执行与时区混乱的终极方案 凌晨三点&#xff0c;服务器告警铃声突然响起——监控系统显示同一批数据处理任务在短时间内被重复执行了17次。这不是科幻场景&#xff0c;而是某电商平台在使用APScheduler时遇到的真实生产事…...

RWKV7-1.5B-g1a轻量对话模型应用:微信公众号自动回复+知识库问答搭建

RWKV7-1.5B-g1a轻量对话模型应用&#xff1a;微信公众号自动回复知识库问答搭建 1. 模型简介与特点 rwkv7-1.5B-g1a 是基于 RWKV-7 架构的多语言文本生成模型&#xff0c;特别适合中文轻量对话场景。相比传统大模型&#xff0c;它具有以下优势&#xff1a; 资源占用低&#…...