当前位置: 首页 > wzjs >正文

宿迁网站建设公司百度指数工具

宿迁网站建设公司,百度指数工具,上海网站建设免费推,得到app骗局[ 题目描述 ]: [ 思路 ]: 一个独立的岛屿其周围都是0,那么从某一个 1 出发,将其上下左右包含其自身的 1 全部设置为0,就相当于去除了一片大陆,大陆数1,然后寻找下一个 1 去进行重复操作&#…

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • 一个独立的岛屿其周围都是0,那么从某一个 1 出发,将其上下左右包含其自身的 1 全部设置为0,就相当于去除了一片大陆,大陆数+1,然后寻找下一个 1 去进行重复操作,直到整个图都是 0
  • 那么从第 [0,0] 个元素开始,如果其是 1 ,那么去判断,他右边 [0,1] 和下边 [1,0] 元素是否为1
    • 为 1,则需要去探寻该元素的上下左右元素是否为 1 (递归)
    • 为 0,说明抵达了这偏大陆的边界,设置其自身为0,结束这个方向的探寻
  • 每消除一片大陆,大陆数+1
  • 运行如下
    在这里插入图片描述
void eliminate(char** grid,int row,int column,int gridSize, int* gridColSize){grid[row][column]='0';if(row-1>=0 && grid[row-1][column]=='1') eliminate(grid,row-1,column,gridSize,gridColSize);if(row+1<gridSize && grid[row+1][column]=='1') eliminate(grid,row+1,column,gridSize,gridColSize);if(column-1>=0 && grid[row][column-1]=='1') eliminate(grid,row,column-1,gridSize,gridColSize);if(column+1<gridColSize[row] && grid[row][column+1]=='1') eliminate(grid,row,column+1,gridSize,gridColSize);
}int numIslands(char** grid, int gridSize, int* gridColSize) {int landsum=0;for(int i=0;i<gridSize;i++){for(int j=0;j<gridColSize[i];j++){if(grid[i][j]=='1'){eliminate(grid,i,j,gridSize,gridColSize);landsum++;}}}return landsum;
}

[ 官方题解 ]:

  • 方法一:深度优先搜索,基本同上
  • 方法二:广度优先搜索,扫描整个二维网格。如果一个位置为 1,则将其加入队列,开始进行广度优先搜索。在广度优先搜索的过程中,每个搜索到的 1 都会被重新标记为 0。直到队列为空,搜索结束。最终岛屿的数量就是我们进行广度优先搜索的次数。
class Solution {
public:int numIslands(vector<vector<char>>& grid) {int nr = grid.size();if (!nr) return 0;int nc = grid[0].size();int num_islands = 0;for (int r = 0; r < nr; ++r) {for (int c = 0; c < nc; ++c) {if (grid[r][c] == '1') {++num_islands;grid[r][c] = '0';queue<pair<int, int>> neighbors;neighbors.push({r, c});while (!neighbors.empty()) {auto rc = neighbors.front();neighbors.pop();int row = rc.first, col = rc.second;if (row - 1 >= 0 && grid[row-1][col] == '1') {neighbors.push({row-1, col});grid[row-1][col] = '0';}if (row + 1 < nr && grid[row+1][col] == '1') {neighbors.push({row+1, col});grid[row+1][col] = '0';}if (col - 1 >= 0 && grid[row][col-1] == '1') {neighbors.push({row, col-1});grid[row][col-1] = '0';}if (col + 1 < nc && grid[row][col+1] == '1') {neighbors.push({row, col+1});grid[row][col+1] = '0';}}}}}return num_islands;}
};
  • 方法三:并查集,如果一个位置为 1,则将其与相邻四个方向上的 1 在并查集中进行合并。最终岛屿的数量就是并查集中连通分量的数目。
class UnionFind {
public:UnionFind(vector<vector<char>>& grid) {count = 0;int m = grid.size();int n = grid[0].size();for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (grid[i][j] == '1') {parent.push_back(i * n + j);++count;}else {parent.push_back(-1);}rank.push_back(0);}}}int find(int i) {if (parent[i] != i) {parent[i] = find(parent[i]);}return parent[i];}void unite(int x, int y) {int rootx = find(x);int rooty = find(y);if (rootx != rooty) {if (rank[rootx] < rank[rooty]) {swap(rootx, rooty);}parent[rooty] = rootx;if (rank[rootx] == rank[rooty]) rank[rootx] += 1;--count;}}int getCount() const {return count;}private:vector<int> parent;vector<int> rank;int count;
};class Solution {
public:int numIslands(vector<vector<char>>& grid) {int nr = grid.size();if (!nr) return 0;int nc = grid[0].size();UnionFind uf(grid);int num_islands = 0;for (int r = 0; r < nr; ++r) {for (int c = 0; c < nc; ++c) {if (grid[r][c] == '1') {grid[r][c] = '0';if (r - 1 >= 0 && grid[r-1][c] == '1') uf.unite(r * nc + c, (r-1) * nc + c);if (r + 1 < nr && grid[r+1][c] == '1') uf.unite(r * nc + c, (r+1) * nc + c);if (c - 1 >= 0 && grid[r][c-1] == '1') uf.unite(r * nc + c, r * nc + c - 1);if (c + 1 < nc && grid[r][c+1] == '1') uf.unite(r * nc + c, r * nc + c + 1);}}}return uf.getCount();}
};
http://www.dtcms.com/wzjs/378663.html

相关文章:

  • pc28网站开发win7优化软件
  • 做网站的市场有那么大吗专业的郑州网站推广
  • 网站在建设中页面网站维护
  • 成都网站建设哪家专业潍坊在线制作网站
  • 域名网站建设方案建站平台哪个比较权威
  • 私募股权基金网站建设今日军事新闻头条最新
  • 网络舆情应对措施seo优化交流
  • 做网站复杂吗南昌网站开发公司
  • 北京网站建设网站国家免费培训学校
  • 网站右下角弹出广告代码电商平台推广费用大概要多少
  • 安庆哪里做网站百度开发者平台
  • 网站的排版深圳居家办公
  • 中国建筑公司网站名词解释seo
  • 网站建设与管理案例教程第三版答案开网店哪个平台靠谱
  • 网站建设哪个公司靠谱网站关键词优化网站推广
  • 外贸五金网站建设国内销售平台有哪些
  • 石家庄营销型网站制作百度账号注册入口
  • 自己免费建设网站比较开放的浏览器
  • 2008建设网站windows永久禁止更新
  • 建设独立网站的好处电商运营怎么自学
  • 北海做网站网站建设哪家好百度客户端下载
  • 张家港网站制作企优网络游戏推广平台
  • 建设一个小网站赚钱吗兰州网站seo服务
  • 网站开发兼职团队关键词排名优化公司哪家好
  • 公司网站建设的系统功能需求今日军事新闻最新消息新闻报道
  • 简述上课网站建设所用的技术架构搜索引擎是网站吗
  • 邹城网站建设哪家便宜百度禁止seo推广
  • asp网站模板安装网络推广搜索引擎
  • 网站的建设技术有哪些内容官网整站优化
  • 国内最好的网站建设公司怎样推广自己的app