200. Number of Islands
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:
Input:
11110
11010
11000
00000
Output: 1
Example 2:
Input:
11000
11000
00100
00011
Output: 3
難度:medium
題目:
給定一個由1和0組成的二維表格,1表示陸地 0表示水域,統計陸地數。一塊陸地是由水域包圍且由水平和垂直陸地連結而成。你可以假定表格的四邊都由水域包圍。
思路:
遞迴遍歷,將遍歷過的位置標記出來。
Runtime: 3 ms, faster than 100.00% of Java online submissions for Number of Islands.
class Solution { public int numIslands(char[][] grid) { int count = 0; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[i].length; j++) { if ('1' == grid[i][j]) { colorGrid(grid, i, j); count++; } } } return count; } private void colorGrid(char[][] grid, int i, int j) { if (i < 0 || i >= grid.length || j < 0 || j >= grid[i].length || '0' == grid[i][j] || 'X' == grid[i][j]) { return; } grid[i][j] = 'X'; colorGrid(grid, i + 1, j); colorGrid(grid, i - 1, j); colorGrid(grid, i, j + 1); colorGrid(grid, i, j - 1); } }