LeetCode200. Number of Islands
来源:互联网 发布:java new date 编辑:程序博客网 时间:2024/05/17 01:46
题目:
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
题目分析:
题目意思是将所有相邻的“1”当成一个岛,给定一个二维数组,要我们得出总共有多少个岛
由相邻的“1”构成一个岛我们可以想到只要知道其中一个“1”的所在,就可以使用dfs或者bfs来得到所有相邻的其他的“1”,只要当要扩增的位置都没法扩增(也即没有相邻的“1”)的时候让结果+1即可。至于要知道其中一个“1”的所在我们可以遍历这个二维数组,找出其中没有被浏览过的位置(也即之前的扩增不包括的位置)并扩增即可。
下面是使用dfs的c++代码
C++代码
class Solution {public: void DFS(vector<vector<char>>& grid, vector<bool>&visit, int i, int j) { int coloum = grid[0].size(); if (i < 0||j < 0||i >= grid.size()||j >= grid[0].size()) { return; } if (visit[i * coloum + j] == true||grid[i][j] == '0') return; visit[i * coloum + j] = true; DFS(grid, visit, i - 1, j); DFS(grid, visit, i + 1, j); DFS(grid, visit, i, j - 1); DFS(grid, visit, i, j + 1); } int numIslands(vector<vector<char>>& grid) { if (grid.size() == 0) return 0; int row = grid.size(), coloum = grid[0].size(); vector<bool> visit; for (int i = 0; i < row * coloum; i++) { visit.push_back(false); } int result = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < coloum; j++) { if (visit[i * coloum + j] == false&&grid[i][j] == '1') { DFS(grid, visit, i, j); result++; } } } return result; }};
阅读全文
0 0
- LeetCode200 Number of Islands
- leetcode200. Number of Islands
- LeetCode200. Number of Islands
- LeetCode200 Number of Islands
- LeetCode200—Number of Islands
- LeetCode200——Number of Islands
- LeetCode200. Number of Islands 基础dfs
- 第三周:( LeetCode200 ) Number of Islands(c++)
- Number of Islands
- Number of Islands
- Number of Islands
- [LeetCode] Number of Islands
- Leetcode-Number of Islands
- Number of Islands
- Leetcode Number of Islands
- [LeetCode]Number of Islands
- Number of Islands
- Number of Islands
- 优化器
- java项目中嵌入FineReport无法显示
- python 的 __init__.py 的使用说明
- 关于app自动化测试pageObject设计模式
- Restful风格API接口开发springMVC篇
- LeetCode200. Number of Islands
- 初学java:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- RPM方式安装MySQL5.6
- 解决Android APP启动出现白屏或黑屏的问题
- 前端面试题-滴滴二面
- java 常见单词收集
- Redis在windows下安装过程
- IntelliJ IDEA 安装问题解决
- Spring集成Mybatis时的常见报错