• leetcode200dfs岛屿的数量


    /**
    <p>给你一个由 <code>'1'</code>(陆地)和 <code>'0'</code>(水)组成的的二维网格,请你计算网格中岛屿的数量。</p>
    
    <p>岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。</p>
    
    <p>此外,你可以假设该网格的四条边均被水包围。</p>
    
    <p> </p>
    
    <p><strong>示例 1:</strong></p>
    
    <pre>
    <strong>输入:</strong>grid = [
      ["1","1","1","1","0"],
      ["1","1","0","1","0"],
      ["1","1","0","0","0"],
      ["0","0","0","0","0"]
    ]
    <strong>输出:</strong>1
    </pre>
    
    <p><strong>示例 2:</strong></p>
    
    <pre>
    <strong>输入:</strong>grid = [
      ["1","1","0","0","0"],
      ["1","1","0","0","0"],
      ["0","0","1","0","0"],
      ["0","0","0","1","1"]
    ]
    <strong>输出:</strong>3
    </pre>
    
    <p> </p>
    
    <p><strong>提示:</strong></p>
    
    <ul>
    	<li><code>m == grid.length</code></li>
    	<li><code>n == grid[i].length</code></li>
    	<li><code>1 <= m, n <= 300</code></li>
    	<li><code>grid[i][j]</code> 的值为 <code>'0'</code> 或 <code>'1'</code></li>
    </ul>
    <div><div>Related Topics</div><div><li>深度优先搜索</li><li>广度优先搜索</li><li>并查集</li><li>数组</li><li>矩阵</li></div></div><br><div><li> 1770</li><li> 0</li></div>
    */
    
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
    
    	//主函数计算岛屿数量
    	public int numIslands(char[][] grid) {
    		int res = 0;
    		int m = grid.length;
    		int n = grid[0].length;
    		for (int i = 0; i < m; i++) {
    			for (int j = 0; j < n; j++) {
    				if(grid[i][j]=='1'){
    					res++;
    					dfs(grid,i,j);
    				}
    			}
    		}
    		return res;
    	}
    
    	//子函数负责淹没 flood fill,
    	void dfs(char[][] grid,int i ,int j){
    		int m = grid.length;
    		int n = grid[0].length;
    		if (i < 0 || j < 0 || i >= m || j >= n) {
    			return ;
    		}
    
    		if(grid[i][j]=='0'){
    			return ;
    		}
    
    		grid[i][j]='0';
    		dfs(grid,i-1,j);
    		dfs(grid,i+1,j);
    		dfs(grid,i,j+1);
    		dfs(grid,i,j-1);
    	}
    }
    //leetcode submit region end(Prohibit modification and deletion)
    
    
    
  • 相关阅读:
    English trip V2-B 14 Yes, I can! 是的,我能! Teacher:Russell
    I1-3 Weather Teacher:Corrine
    4-redis数据过期策略
    redis持久化
    redis优势
    解决error while loading shared libraries
    1-zookeeper基本原理和使用
    ObjectiveSQL框架让你不要再写复杂SQL
    sharding-proxy+sharding-ui安装使用配置
    vim 多行取消注释
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/16404129.html
Copyright © 2020-2023  润新知