433. Number of IslandsLintCode java
Posted phdeblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了433. Number of IslandsLintCode java相关的知识,希望对你有一定的参考价值。
Description
Given a boolean 2D matrix, 0
is represented as the sea, 1
is represented as the island. If two 1 is adjacent, we consider them in the same island. We only consider up/down/left/right adjacent.
Find the number of islands.
Example
Given graph:
[
[1, 1, 0, 0, 0],
[0, 1, 0, 0, 1],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 1]
]
return 3
.
解题:算岛屿的个数。因为连接在一起的陆地都算是岛屿,所以当确定有一一个格子是陆地时,它周围的格子即使是陆地,也不能重复计算,而应该当成海洋(对应于下面代码中的dfs函数)。代码如下:
public class Solution { /** * @param grid: a boolean 2D matrix * @return: an integer */ public int numIslands(boolean[][] grid) { // write your code here int res = 0; int m = grid.length; if(m == 0) return 0; int n = grid[0].length; for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++){ if(grid[i][j] == true){ res++; dfs(grid, i, j); } } } return res; } public void dfs(boolean[][]grid, int i, int j){ if(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length){ return; } if(grid[i][j] == true){ grid[i][j] = false; dfs(grid, i-1, j); dfs(grid, i+1, j); dfs(grid, i, j-1); dfs(grid, i, j+1); } } }
以上是关于433. Number of IslandsLintCode java的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D
Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) A
Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) C. Planning
Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) A. Fraction
Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) B. Maxim Buys an Apartment