LeetCode OJ 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:

11110110101100000000

Answer: 1

Example 2:

11000110000010000011

Answer: 3

Credits:Special thanks to@mithmattfor adding this problem and creating all test cases.

int R, C;int dir[4][2] = { 1, 0, -1, 0, 0, 1, 0, -1 };bool ** vis;char ** G;void dfs(int pi, int pj) {vis[pi][pj] = true;int npi, npj;for (int i = 0; i < 4; i++) {npi = pi + dir[i][0];npj = pj + dir[i][1];if (0 <= npi && npi < R && 0 <= npj && npj < C && !vis[npi][npj] && G[npi][npj] == '1') dfs(npi, npj);}}int numIslands(char **grid, int numRows, int numColumns) {G = grid;vis = (bool **)malloc(sizeof(bool*) * numRows);for (int i = 0; i < numRows; i++) vis[i] = (bool *)malloc(sizeof(bool) * numColumns);for (int i = 0; i < numRows; i++)for (int j = 0; j < numColumns; j++) vis[i][j] = false;int ans = 0;R = numRows;C = numColumns;for (int i = 0; i < numRows; i++)for (int j = 0; j < numColumns; j++)if (!vis[i][j] && G[i][j] == '1') {ans++;dfs(i, j);}for (int i = 0; i < numRows; i++) free(vis[i]);free(vis);return ans;}

,最美不过偷瞄你是你忽然转头,看见你的微笑

LeetCode OJ Number of Islands

相关文章:

你感兴趣的文章:

标签云: