本文主要是介绍LeetCode--200. Number of Islands,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:https://leetcode.com/problems/number-of-islands/
要求计算0-1矩阵中的孤岛1数目。举个例子,在某个位置(i,j)board[i][j]=1,则与它(邻接)连通的“1”都被算作同一片岛屿,这里可以使用深度优先搜索将与之连通的‘1’位置全部访问一遍,直到岛屿周围都是‘0’;当然要计算岛屿的个数就要检查所有格点(二重循环),另外属于某个岛屿的格点再也不会属于另外一个岛屿,所以可以将其置‘0’避免重复访问,当然也可以用一个二维数组存储访问情况避免重复访问。
class Solution {public static int rows=0;public static int cols=0;public static void DFS(char[][] board,int i,int j){if(i<0 || i>=rows || j<0 || j>=cols)return;board[i][j]='0';DFS(board,i+1,j);DFS(board,i-1,j);DFS(board,i,j-1);DFS(board,i,j+1);}public int numIslands(char[][] board) {rows=board.length;if(rows==0) return 0;cols=board[0].length;int count=0;for(int i=0;i<rows;i++)for(int j=0;j<cols;j++){if(board[i][j]=='1'){DFS(board,i,j);count++;}}return count;}
}
这篇关于LeetCode--200. Number of Islands的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!