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

北海网站优化全球网站流量排名查询

北海网站优化,全球网站流量排名查询,普通网站建设费用,深圳十大网站建设Leetcode 1254 题意 给定一个m*n的矩阵含有0和1,1代表水,0代表陆地,岛屿是陆地的集合,如果一个岛屿和四个方向的边界相连,则不算封闭岛屿。求有多少个封闭的岛屿。 题目链接 https://leetcode.com/problems/number…

Leetcode 1254

题意

给定一个m*n的矩阵含有0和1,1代表水,0代表陆地,岛屿是陆地的集合,如果一个岛屿和四个方向的边界相连,则不算封闭岛屿。求有多少个封闭的岛屿。

题目链接

https://leetcode.com/problems/number-of-closed-islands/

思路

从边界上的0开始用dfs向四个方向遍历,把这些0形成的岛屿都遍历完成,这样就能排除和边界相连的岛屿。然后再从没有遍历过的0开始用dfs向四个方向遍历,并且计数。这些岛屿就是封闭的岛屿(参考number of islands)

题解

class Solution {
public:int m;int n;int closedIsland(vector<vector<int>>& grid) {m = grid.size();n = grid[0].size();int res = 0;vector<vector<bool>> vis(m, vector<bool>(n, false));for(int i = 0; i < m; i++) {if(grid[i][0] == 0 && !vis[i][0]) {dfs(grid, vis, i, 0);}if(grid[i][n-1] == 0 && !vis[i][n-1]) {dfs(grid, vis, i, n-1);}}for(int i = 0; i < n; i++) {if(grid[0][i] == 0 && !vis[0][i]) {dfs(grid, vis, 0, i);}if(grid[m-1][i] == 0 && !vis[m-1][i]) {dfs(grid, vis, m-1, i);}}for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {if(grid[i][j] == 0 && !vis[i][j]) {dfs(grid, vis, i, j);res++;}}}return res;}void dfs(vector<vector<int>>& grid, vector<vector<bool>>& vis, int x, int y) {vis[x][y] = true;int dk[] = {-1, 0, 1, 0, -1};for(int i = 0; i < 4; i++) {int dx = x + dk[i];int dy = y + dk[i+1];if(dx >= 0 && dx < m && dy >= 0 && dy < n && !vis[dx][dy] && grid[dx][dy] == 0) {dfs(grid, vis, dx, dy);}}}
};

时间复杂度: O ( m n ) O(mn) O(mn) m为给定矩阵的长度,n为给定矩阵的宽度
空间复杂度: O ( m n ) O(mn) O(mn) m为给定矩阵的长度,n为给定矩阵的宽度

Leetcode 1020

思路

和Leetcode 1254一样,只是换壳的Number of Closed Islands + Max Area of Island,不赘述了。

题解

class Solution {
public:int m;int n;int numEnclaves(vector<vector<int>>& grid) {m = grid.size();n = grid[0].size();int res = 0;vector<vector<bool>> vis(m, vector<bool>(n, false));for(int i = 0; i < m; i++) {if(grid[i][0] == 1 && !vis[i][0]) {dfs(grid, vis, i, 0);}if(grid[i][n-1] == 1 && !vis[i][n-1]) {dfs(grid, vis, i, n-1);}}for(int i = 0; i < n; i++) {if(grid[0][i] == 1 && !vis[0][i]) {dfs(grid, vis, 0, i);}if(grid[m-1][i] == 1 && !vis[m-1][i]) {dfs(grid, vis, m-1, i);}}for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {if(grid[i][j] == 1 && !vis[i][j]) {res += dfs(grid, vis, i, j);}}}return res;}int dfs(vector<vector<int>>& grid, vector<vector<bool>>& vis, int x, int y) {vis[x][y] = true;int area = 1;int dk[] = {-1, 0, 1, 0, -1};for(int i = 0; i < 4; i++) {int dx = x + dk[i];int dy = y + dk[i+1];if(dx >= 0 && dx < m && dy >= 0 && dy < n && grid[dx][dy] == 1 && !vis[dx][dy]) {area += dfs(grid, vis, dx, dy);}}return area;}
};

时间复杂度: O ( m n ) O(mn) O(mn) m为给定矩阵的长度,n为给定矩阵的宽度
空间复杂度: O ( m n ) O(mn) O(mn) m为给定矩阵的长度,n为给定矩阵的宽度

http://www.khdw.cn/news/4267.html

相关文章:

  • 哈尔滨做网站价格厦门人才网官网招聘信息网
  • wordpress外贸模板下载seo诊断方案
  • 四川宜宾网站建设营销推广app
  • 蔚县网站建设公司软件外包企业排名
  • 公司网站优化推广方案软文营销的写作技巧有哪些
  • 在上阿里云做网站百度seo课程
  • 余姚网站推广公司西安网站seo排名优化
  • 网站图标素材图片网站平台推广
  • 湘潭网站建设网站推广今日热点新闻排行榜
  • wordpress 留言 插件北京百度seo排名公司
  • 网站片头动画用什么软件做的seo站长之家
  • 深圳做企业网站的湖南网络推广机构
  • 服务器网站路径问题厦门人才网
  • 涿州网站建设有限公司线上营销
  • 有新浪的域名怎么做网站百度云网盘搜索引擎
  • 网络管理系统设备seo工作流程
  • 自己做时时彩网站营销策划案的模板
  • 做幼儿园网站软文广告100字
  • 公司网站改版要怎么做绍兴seo排名收费
  • 做团购网站需要注册哪些商标百度快照怎么做
  • 烟台专业做网站公司有哪些网站制作开发
  • 什么网页游戏可以赚钱seo推广优化公司哪家好
  • 成都设计公司名字seo是什么单位
  • ps做网站要求高吗软件开发交易平台
  • 350做网站深圳市场推广外包团队
  • 设计模板修饰演示文稿qq关键词排名优化
  • 如何做情趣网站网站网络营销
  • 上海营销网站建设定制服务营销网站建设培训学校
  • 集团公司做网站的好处有什么qq群怎么优化排名靠前
  • dede网站qq类源码发布悬赏任务的推广平台