zoukankan      html  css  js  c++  java
  • [leetcode-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:

    11110
    11010
    11000
    00000

    Answer: 1

    Example 2:

    11000
    11000
    00100
    00011

    Answer: 3

    思路:

    DFS,用一个标记visited数组记录。

    void dfsisland(vector<vector<char>>& grid, vector<vector<bool>>& visited,int i,int j)
         {
             int m = grid.size(), n = grid[0].size();
             if (i < 0 || i >= m || j < 0 || j >= n || visited[i][j] || grid[i][j] == '0')return;
             visited[i][j] = true;
             dfsisland(grid, visited, i + 1, j);
             dfsisland(grid, visited, i - 1, j);
             dfsisland(grid, visited, i, j + 1);
             dfsisland(grid, visited, i, j - 1);
         }
         int numIslands(vector<vector<char>>& grid)
         {
             if (grid.empty())return 0;
             int m = grid.size(), n = grid[0].size();
             vector<vector<bool>>visited(m, vector<bool>(n, false));
             int ret = 0;
             for (int i = 0; i < m;i++)
             {
                 for (int j = 0; j < n;j++)
                 {
                     if (grid[i][j] == '1' && !visited[i][j])
                     {
                         dfsisland(grid, visited,i,j);
                         ret++;
                     }
                 }
             }
             return ret;
         }
  • 相关阅读:
    canvas粒子时钟
    数组复制
    对象拷贝
    不常见但很有用的chrome调试工具使用方法
    变形transform的副作用
    CSS页面渲染优化属性will-change
    CSS实现导航条Tab切换的三种方法
    CSS两端对齐
    CSS倒影
    CSS滤镜
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7153046.html
Copyright © 2011-2022 走看看