【LeetCode】Number of Islands 解題報告
來源:程序員人生 發(fā)布時間:2015-04-28 08:16:32 閱讀次數(shù):3671次
【題目】
Given a 2d grid map of '1'
s (land) and '0'
s
(water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
Example 1:
11110
11010
11000
00000
Answer: 1
Example 2:
11000
11000
00100
00011
Answer: 3
【解析】
題意:1個只包括字符0和1的2維數(shù)組,找出里面不相鄰的只包括1的塊的個數(shù)。
思路:DFS、BFS。只要遍歷1遍,碰到1個1,就把它周圍所有相連的1都標(biāo)記為非1,這樣全部遍歷進(jìn)程中碰到的1的個數(shù)就是所求解。
【Java代碼:DFS、遞歸】
public class Solution {
private int m, n;
public int numIslands(char[][] grid) {
m = grid.length;
if (m == 0) return 0;
n = grid[0].length;
if (n == 0) return 0;
int ans = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] != '1') continue;
ans++;
dfs(grid, i, j);
}
}
return ans;
}
public void dfs(char[][] grid, int i, int j) {
if (i < 0 || i >= m || j < 0 || j >= n) return;
if (grid[i][j] == '1') {
grid[i][j] = '2';
dfs(grid, i - 1, j);
dfs(grid, i + 1, j);
dfs(grid, i, j - 1);
dfs(grid, i, j + 1);
}
}
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈