博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 200. Number of Islands(岛屿的数量)
阅读量:4091 次
发布时间:2019-05-25

本文共 1387 字,大约阅读时间需要 4 分钟。

 

一、问题描述

给定一个二维数组,其元素均为'1'和'0',分别代表陆地和水,现在要计算数组中岛屿的数量。

被水包围的就是岛屿,此外,数组的四条边界均被水包围。

PS:某司的校招机试也出了这道题,该题反过来求一块有水有陆地的地域中湖泊的数量,解法完全一样。

 

测试用例:

Input: grid = [  ["1","1","1","1","0"],  ["1","1","0","1","0"],  ["1","1","0","0","0"],  ["0","0","0","0","0"]]Output: 1Input: grid = [  ["1","1","0","0","0"],  ["1","1","0","0","0"],  ["0","0","1","0","0"],  ["0","0","0","1","1"]]Output: 3

 

二、代码实现

总体思路是进行两层for循环遍历二维数组的所有元素,对于每个遍历到的元素,如果是'1',将其置为'0',并且将它上下左右相邻的S也置为'0'; 如果是'0',直接continue跳过该元素。

class Solution {    public int numIslands(char[][] grid) {        if (grid == null || grid.length == 0) {            return 0;        }                int res = 0;    // 计数器(岛屿的数量)        for (int i=0; i < grid.length; i++) {            for (int j=0; j < grid[0].length; j++) {                if (grid[i][j] == '1') {                    dfs(i, j, grid);                    res ++;                }            }        }        return res;    }    private void dfs(int i, int j, char[][] grid) {        grid[i][j] = '0';        if (i-1 >= 0 && grid[i-1][j] == '1') {  // 上            dfs(i-1, j, grid);        }        if (i+1 < grid.length && grid[i+1][j] == '1') { // 下            dfs(i+1, j, grid);        }        if (j-1 >= 0 && grid[i][j-1] == '1') {  // 左            dfs(i, j-1, grid);        }        if (j+1 < grid[0].length && grid[i][j+1] == '1') { // 右            dfs(i, j+1, grid);        }    } }

 

转载地址:http://tfnii.baihongyu.com/

你可能感兴趣的文章
zookeeper(3)---zookeeper API的简单使用(增删改查操作)
查看>>
zookeeper(4)---监听器Watcher
查看>>
zookeeper(2)---shell操作
查看>>
mapReduce(3)---入门示例WordCount
查看>>
hbase(3)---shell操作
查看>>
hbase(1)---概述
查看>>
hbase(5)---API示例
查看>>
SSM-CRUD(1)---环境搭建
查看>>
SSM-CRUD(2)---查询
查看>>
SSM-CRUD (3)---查询功能改造
查看>>
Nginx(2)---安装与启动
查看>>
springBoot(5)---整合servlet、Filter、Listener
查看>>
C++ 模板类型参数
查看>>
C++ 非类型模版参数
查看>>
设计模式 依赖倒转原则 & 里氏代换原则
查看>>
DirectX11 光照
查看>>
图形学 图形渲染管线
查看>>
DirectX11 计时和动画
查看>>
DirectX11 光照与材质的相互作用
查看>>
DirectX11 法线向量
查看>>