【Java】力扣_每日一题_200. 岛屿数量_中等

200. Number of Islands 岛屿数量 (C++和Java解法) Input: grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"] ] Output: 3 题目大意:1代表土地,0代表水,一个岛屿是由四面环水的土地组成,求岛屿的数量。如上例中含3个岛屿。 解题思路: 典型的回溯法(DFS)求解。 DFS逻辑:目的是搜索完某个岛屿所有为1的所有区域。访问标志visited[i][j]设为true,再.. 阅读详情

题目链接:https://leetcode-cn.com/problems/number-of-islands/

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

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

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

第一次编辑代码:
(他写垃圾算法一直可以的)

class Solution {
    public int numIslands(char[][] grid) {
        if(grid == null || grid.length == 0)
            return 0;
            
        int row = grid.length, col = grid[0].length;
        int ans = 0;
        for(int i = 0; i < row; i++)
            for(int j = 0; j < col; j++){
                if(grid[i][j] == '1'){   
                    dfs(i, j, grid, row, col);
                    ans++;
                }
            }
        return ans;
    }

    public void dfs(int i, int j, char[][] grid, int row, int col){
        
        grid[i][j] = '2';

        if(i-1 >= 0 && grid[i-1][j] == '1')
            dfs(i-1, j, grid, row, col);
        if(i+1 < row && grid[i+1][j] == '1')
            dfs(i+1, j, grid, row, col);
        if(j-1 >= 0 && grid[i][j-1] == '1')
            dfs(i, j-1, grid, row, col);
        if(j+1 < col && grid[i][j+1] == '1')
            dfs(i, j+1, grid, row, col);
    }
}

反思
太蠢了,判断条件可以提出来不用重复写。

第二次编辑代码:

class Solution {
    public int numIslands(char[][] grid) {
        if(grid == null || grid.length == 0)
            return 0;

        int row = grid.length, col = grid[0].length;
        int ans = 0;
        for(int i = 0; i < row; i++)
            for(int j = 0; j < col; j++){
                if(grid[i][j] == '1'){   
                    dfs(i, j, grid, row, col);
                    ans++;
                }
            }
        return ans;
    }

    public void dfs(int i, int j, char[][] grid, int row, int col){
        if(i < 0 || i >= row || j < 0 || j >= col || grid[i][j] != '1')
            return;
        
        grid[i][j] = '2';

        dfs(i-1, j, grid, row, col);
        dfs(i+1, j, grid, row, col);
        dfs(i, j-1, grid, row, col);
        dfs(i, j+1, grid, row, col);
    }
}
关于bfs(广度优先搜索算法)和dfs(深度优先搜索算法)--leetcode题:1036. 逃离大迷宫;112. 路径总和;113. 路径总和 II;102. 二叉树的层序遍历;200. 岛屿数量 leetcode 每日一题 1036. 逃离大迷宫 在一个 106 x 106 的网格中,每个网格上方格的坐标为 (x, y) 。 现在从源方格 source = [sx, sy] 开始出发,意图赶往目标方格 target = [tx, ty] 。数组 blocked 是封锁的方格列表,其中每个 blocked[i] = [xi, yi] 表示坐标为 (xi, yi) 的方格是禁止通行的。 每次移动,都可以走到网格中在四个方向上相邻的方格,只要该方格 不 在给出的封锁列表 blocked 上。同时,不允许走 阅读详情

相关推荐

ST电机库实战:从状态机到稳健启动流程的深度解析

本文深度解析了ST电机库中状态机的核心作用与稳健启动流程。状态机作为电机控制的“交通指挥官”,通过IDLE、CHARGE_BOOT_CAP、ALIGNMENT等一系列状态的严格跳转,确保了永磁同步电机(PMSM)和直流无刷电机(BLDC)的安全启动与可靠运行,是避免硬件损坏和实现平稳控制的关键。

weixin_29161785的博客 224

Leetcode【DFS BFS】| 200. 岛屿数量(java详细注释版)

Leetcode | 200. 岛屿数量题目解题思路DFS解法BFS解法 题目 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1:  输入:  11110  11010  11000  00000  输出: 1 示例 2: ...

Cherils的博客 686

BLDC六步换相驱动实战:从霍尔真值表到PWM调速的代码实现

本文详细解析了BLDC六步换相驱动原理,从霍尔真值表解读到PWM调速的代码实现,提供了基于STM32的实战方案。重点介绍了霍尔信号解码、换相状态机设计以及PWM动态调速策略,帮助开发者快速掌握无刷电机驱动技术。

weixin_28273593的博客 210

200. 岛屿数量

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

stay hungry ! stay foolish! 473

NI数据采集卡测电流的三种‘姿势’:直接连接、外接分流电阻还是用电流互感器?看完这篇不再纠结

本文全面解析了NI数据采集卡在电流测量中的三种主流方案:直接连接、外接分流电阻和电流互感器。通过对比精度、带宽、隔离等关键参数,结合NI-DAQmx软件生态,为工业自动化、电力监测等场景提供选型指南和实战技巧,帮助工程师优化测量系统设计。

weixin_30882895的博客 420

Isaacgym使用操作指南

Isaac Gym 是一个强大的仿真工具,特别适合那些需要进行大规模并行仿真和训练的机器人和强化学习任务。通过 GPU 加速、深度学习集成和丰富的物理仿真能力,Isaac Gym 能够显著提高仿真和训练效率,是机器人学和 AI 研究中的一大利器。

Tony Wey的博客 1万+

力扣:200.岛屿数量

岛屿数量 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100 00011 输出: 3 解释: 每座...

weixin_43370149的博客 308

OpenHarmony自定义Launcher

OpenHarmony源码版本:4.0release开发板:DAYU / rk3568DevEco Studio版本:4.0.0.600切换分支为OpenHarmony-4.0-Release,并下载源码。

Abner_Crazy的博客 1628

Java实现 LeetCode 200 岛屿数量

200. 岛屿数量 给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100 00011 输出: 3 PS: 循环得时候把1变成2,防止重复...

南 墙 1万+

AutoSAR实验视频讲解:相关资料下载

AutoSAR实验视频讲解:闪烁一颗LED实验【相关资料下载】 总目录 为了方便大家自己的实验顺利进行,这里我们准备了一些实验中可能用到的资料供大家使用 介绍 这里主要是三个文件: MyApp_Core.0是我们的用户代码,在工程集成那集将会讲解 McalConfig.arxml就是我们的Mcal导出文件,用于导入到DaVinci中生成代码 CAN.dbc文件是我们的通信矩阵文件 以上几个文件都是简单的配置,不具有实际项目的实用性,大家仅供参考 // 顺便吐槽一句:百度网盘的吃相真的难看 下载连接

雪云飞星的博客 6668

把 SAP Workflow 的 Task 搞懂:从 TS 到 WS 的建模、触发与排错全景

摘要:SAP Business Workflow中的Task是工作流设计的核心单元,分为single-step(独立执行)和multistep(流程编排)两种类型。Task设计直接影响流程的可复用性、扩展性和可排错性。系统将Task分为5类(TS/T/WS/WF/TG),运行时通过事件触发、Linkage匹配、Work Item执行的链路完成流程驱动。关键事务码包括PFTC_INS(创建Task)、SWE2(事件配置)等。正确设计Task边界并遵循"先业务提交后事件触发"原则,是构建稳定

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 273

【攻克力扣200题--35】200. 岛屿数量

DFS var numIslands = function(grid) { let m=grid.length; if(m==0) return 0; let n=grid[0].length; let direction=[[-1,0],[0,-1],[1,0],[0,1]]; let count=0; for(var i=0;i<m;i...

m0_37976836的博客 947

全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数据信号方面,常见的格式有RGB888、RGB666、RGB565。为什么有什么多选择,主要还是取决于soc pin脚的多少来定。当然,pin脚越多,显示的颜色就越精准,还原度就越高。 举例来说,假设

嵌入式-老费,一个分享专业嵌入式知识的blog 2792

leetcode每日一题.200:岛屿数量

题目描述: 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/number-of-islands 著作权归领扣网络所有。商业转...

FarStars的博客 1021

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【LeetCode每日一题】——200.岛屿数量

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 回溯法 二【题目难度】 中等 三【题目编号】 200.岛屿数量 四【题目描述】 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 五【题目示例】 示例 1: 输入:

IronmanJay 466

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

每日一题:Leetcode-200 岛屿数量

力扣题目解题思路java代码。

LIUCHANGSHUO的博客 666

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【LeetCode】 200. Number of Islands 岛屿数量(Medium)(JAVA)每日一题

【LeetCode】 200. Number of Islands 岛屿数量(Medium)(JAVA) 题目地址: https://leetcode.com/problems/number-of-islands/ 题目描述: Given a 2d grid map of '1’s (land) and '0’s (water), count the number of islands. An i...

qq_16927853的博客 506

【Day12】力扣LeetCode刷题[788.旋转数字][200.岛屿数量][509. 斐波那契数]

LeetCode力扣刷题的第十二天,可以进来看看,解题思路加代码注释都是齐全的。

ebb29bbe的博客 391

LeetCode 200. 岛屿数量 深搜 每日一题

LeetCode 200. 岛屿数量 深搜 每日一题

lishifu_的博客 157

【LeetCode】200. Number of Islands 岛屿数量(Medium)(JAVA)

【LeetCode】200. Number of Islands 岛屿数量(Medium)(JAVA) 题目地址: https://leetcode.com/problems/number-of-islands/ 题目描述: Given an m x n 2d grid map of '1’s (land) and '0’s (water), return the number of islands. An island is surrounded by water and is formed by con

qq_16927853的博客 193

【每日刷题】岛屿数量

额外提一下:进DFS前判断边界,或者是在DFS函数最开始判断边界都可以(以前我甚至更习惯把边界判断直接拉个函数出来),这道题的时间是一样的。两个for循环确保每个点都被遍历,flag数组判断是否被遍历过,没遍历就用DFS搜一遍。注意边界条件和flag标记置为true就可以了,代码还挺好写的。Python不太熟,传参什么的写不对,直接找AI给我转换了一下。后面看了别人的题解,优化了一下,快了1ms,节省了一个flag数组。BFS是用队列存,然后把上下左右放进队列(如果符合条件),直到队列为空,就说明搜完了。

m0_60570002的博客 441

Rayman的绝顶之路——Leetcode每日一题打卡6

Leetcode200. 岛屿数量 题目: 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100...

巫魔灵的博客 279

LeetCode 695. 岛屿的最大面积

更多题解尽在每日更新。组队打卡,更多解法等你一起来参与哦!,难度。

m0_64381458的博客 905

【leetcode每日刷题】200. Number of Islands

https://leetcode.com/problems/number-of-islands/ class Solution { public int numIslands(char[][] grid) { int m = grid.length; if(m == 0) return 0; int n = grid[0].leng...

菜菜鸟的博客 178

每日一练 | Day 5

这题是很经典的图算法题,常见的做法有用深度优先搜索或者广度优先搜索,我选择使用深搜来做。本题的思路也很简单,当找到未被遍历到过的陆地时,就把它记做岛屿,然后以他为起点向周围进行遍历,将周围连接着的陆地都标记为已遍历,这样就能保证每次增加岛屿数量时,都是新的岛屿,不会重复。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。深度优先搜索、广度优先搜索。

nx__xn的博客 353

LeetCode每日一题(Making A Large Island)

You are given an n x n binary matrix grid. You are allowed to change at most one 0 to be 1. Return the size of the largest island in grid after applying this operation. An island is a 4-directionally connected group of 1s. Example 1: Input: grid = [[1,0],

wangjun861205的博客 185
上一篇: 【Java】力扣_每日一题_11. 盛最多水的容器_中等
下一篇: 【Java】力扣_每日一题_199. 二叉树的右视图_中等
includei
博客等级 码龄9年 406粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值