zoukankan      html  css  js  c++  java
  • leetcode@ [200] Number of Islands

    https://leetcode.com/problems/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:

    11110
    11010
    11000
    00000

    Answer: 1

    Example 2:

    11000
    11000
    00100
    00011

    Answer: 3

    class Solution {
    public:
        void dfs(vector<vector<char> >& grid, vector<vector<bool> >& vis, int x, int y) {
            int dir[4][2] = {{0,1}, {0,-1}, {1,0}, {-1,0}};
            
            for(int i=0;i<4;++i) {
                int nx = x + dir[i][0], ny = y + dir[i][1];
                if(nx<0 || ny<0 || nx>=grid.size() || ny>=grid[0].size() || vis[nx][ny] || grid[nx][ny] == '0') continue;
                vis[nx][ny] = true;
                dfs(grid, vis, nx, ny);
            }
        }
        int numIslands(vector<vector<char>>& grid) {
            if(grid.size() == 0) return 0;
            
            vector<vector<bool> > vis(grid.size(), vector<bool>(grid[0].size(), false));
            
            int res = 0;
            for(int i=0;i<grid.size();++i) {
                for(int j=0;j<grid[i].size();++j) {
                    if(!vis[i][j] && grid[i][j] == '1') {
                        ++res;
                        dfs(grid, vis, i, j);
                    }
                }
            }
            
            return res;
        }
    };
  • 相关阅读:
    [BZOJ3257]树的难题
    [BZOJ4987]Tree
    [NOI2015][洛谷P2150]寿司晚宴
    P2221 [HAOI2012]高速公路
    BUG全集(我遇到的)
    NOIP2018游记
    BZOJ1103
    Google Chrome 优化
    特殊空格
    Ant Design Vue 使用
  • 原文地址:https://www.cnblogs.com/fu11211129/p/4961970.html
Copyright © 2011-2022 走看看