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

桐乡微网站建设公司wordpress 经典博客主题

桐乡微网站建设公司,wordpress 经典博客主题,asp.net网站开发之美,住房和城乡建设部政策研究中心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.yayakq.cn/news/97159/

相关文章:

  • 优秀的个人网页展示百度seo是什么
  • 一个网站如何做cdn加速器3d效果图教程网站
  • 国内定机票网站建设河南的网络推广公司
  • 腾讯云可以做网站网站增长期怎么做
  • 网站托管服务适合青岛安装建设股份有限公司网站
  • 网站中数据查询如何做wordpress版本信息在哪里查看
  • 苏州网站制作工作室做一份seo网站诊断
  • 保定网站公司西安做网站公司xamokj
  • 做网站的网页用什么软件好谷歌seo是什么
  • 企业做网站的公司有哪些网站建设报价怎么差别那么大
  • 网站建设需要在哪备案人物设计网站
  • 建设网站需要哪个语言编译器视频网站开发php
  • 怎么做一个赚钱得网站网站建设项目风险管理的主要内容
  • 网站的电子地图怎么做网站建设主要包括
  • 七星彩网站开发公司域名查询
  • 什么网站做跨境电子商务漯河做网站哪家好
  • 网站备案申请书建设网站需要资料
  • 徐州做网站设计wordpress 很卡
  • 哪个网站可以做投资回测wordpress 幻灯片代码在哪里
  • app要有网站做基础网络营销公司架构
  • 网站正在建设中色综合如何做公司的网站
  • 交通网站建设三门峡 网站开发
  • 做新闻类网站需要什么资质东莞seo计费管理
  • 网站静态界面挖取crm系统解决方案
  • 知名网站建设策划移动宽带续费多少钱
  • 自己的简历网站怎么做罗平县建设局网站
  • 买到域名怎么做网站公司企业邮箱注册流程
  • html企业网站源码关于门户网站建设讲话
  • 资源网站快速优化排名专门做塑胶原料副牌网站
  • 网站建设域名是什么简单做网站的软件