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

做服装团购网站如何注册公司邮箱

做服装团购网站,如何注册公司邮箱,2345搜索,淄博建设公司网站卡码网题目: 99. 岛屿数量100. 岛屿的最大面积 其他: 今日总结 往期打卡 99. 岛屿数量 跳转: 99. 岛屿数量 学习: 代码随想录公开讲解 问题: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水…

卡码网题目:

  • 99. 岛屿数量
  • 100. 岛屿的最大面积

其他:

今日总结
往期打卡


99. 岛屿数量

跳转: 99. 岛屿数量

学习: 代码随想录公开讲解

问题:

给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。

思路:

Flood Fill求连通区域数量,可以使用bfs或dfs遍历地图,bfs需要及时标记,处理时再标记会重复添加.

复杂度:

  • 时间复杂度: O ( n m ) O(nm) O(nm)
  • 空间复杂度: O ( n m ) O(nm) O(nm)

代码:

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;class Main {private static int ans;private static int[][] DIRECTION = {{0, -1}, {1, 0}, {0, 1}, {-1, 0}};private static boolean[][] vis;private static void dfs(int[][] map, int x, int y) {vis[x][y] = true;for (int i = 0; i < 4; i++) {int n = x + DIRECTION[i][0];int m = y + DIRECTION[i][1];if (n < 0 || n >= map.length || m < 0 || m >= map[0].length || vis[n][m]) continue;if (map[n][m] == 1)dfs(map, n, m);}}private static void bfs(int[][] map,int x,int y){Deque<int[]> stack = new ArrayDeque<>();vis[x][y] = true;stack.add(new int[]{x,y});while(!stack.isEmpty()){int l = stack.size();for(int i=0;i<l;i++){int[] position = stack.pollLast();for(int j=0;j<4;j++){int n = position[0] + DIRECTION[j][0];int m = position[1] + DIRECTION[j][1];if (n < 0 || n >= map.length || m < 0 || m >= map[0].length || vis[n][m]) continue;if (map[n][m] == 1){vis[n][m] = true;stack.add(new int[]{n,m});}}}}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int N = sc.nextInt();int M = sc.nextInt();int[][] map = new int[N][M];vis = new boolean[N][M];for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {map[i][j] = sc.nextInt();}}for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {if (map[i][j] == 0 || vis[i][j]) continue;ans++;bfs(map, i, j);}}System.out.println(ans);}
}

100. 岛屿的最大面积

跳转: 100. 岛屿的最大面积

学习: 代码随想录公开讲解

问题:

给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。

思路:

Flood Fill最大求连通区域长度,可以使用bfs或dfs遍历地图,bfs需要及时标记,处理时再标记会重复添加.

复杂度:

  • 时间复杂度: O ( n m ) O(nm) O(nm)
  • 空间复杂度: O ( n m ) O(nm) O(nm)

代码:

import java.util.*;class Main {private static int ans;private static int[][] DIRECTION = {{0, -1}, {1, 0}, {0, 1}, {-1, 0}};private static boolean[][] vis;private static int dfs(int[][] map, int x, int y) {vis[x][y] = true;int l = 0;for (int i = 0; i < 4; i++) {int n = x + DIRECTION[i][0];int m = y + DIRECTION[i][1];if (n < 0 || n >= map.length || m < 0 || m >= map[0].length || vis[n][m]) continue;if (map[n][m] == 1)l+= dfs(map, n, m);}return l;}private static int bfs(int[][] map,int x,int y){Queue<int[]> stack = new LinkedList<>();vis[x][y] = true;int len = 0;stack.add(new int[]{x,y});while(!stack.isEmpty()){int l = stack.size();len+=l;for(int i=0;i<l;i++){int[] position = stack.poll();for(int j=0;j<4;j++){int n = position[0] + DIRECTION[j][0];int m = position[1] + DIRECTION[j][1];if (n < 0 || n >= map.length || m < 0 || m >= map[0].length || vis[n][m]) continue;if (map[n][m] == 1){vis[n][m] = true;stack.add(new int[]{n,m});}}}}return len;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int N = sc.nextInt();int M = sc.nextInt();int[][] map = new int[N][M];vis = new boolean[N][M];for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {map[i][j] = sc.nextInt();}}for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {if (map[i][j] == 0 || vis[i][j]) continue;// ans++;int tmp = bfs(map, i, j);     //只要加入队列就代表走过,就需要标记,而不是从队列拿出来的时候再去标记走过。ans = Math.max(tmp,ans);}}System.out.println(ans);}
}

总结

练习了dfs,bfs求连通块问题,通过vis数组避免重复遍历,一遍遍历求得所有连通块

往期打卡

代码随想录算法训练营第四十二&四十三天

代码随想录算法训练营第四十一天

代码随想录算法训练营第四十天

代码随想录算法训练营第三十九天

代码随想录算法训练营第三十八天

代码随想录算法训练营第三十七天

代码随想录算法训练营第三十五&三十六天

代码随想录算法训练营第三十四天

代码随想录算法训练营第三十三天(补)

代码随想录算法训练营第三十二天

代码随想录算法训练营第三十一天

代码随想录算法训练营第三十天(补)

代码随想录算法训练营第二十九天

代码随想录算法训练营第二十八天

代码随想录算法训练营第二十七天(补)

代码随想录算法训练营第二十六天

代码随想录算法训练营第二十五天

代码随想录算法训练营第二十四天

代码随想录算法训练营第二十三天

代码随想录算法训练营周末四

代码随想录算法训练营第二十二天(补)

代码随想录算法训练营第二十一天

代码随想录算法训练营第二十天

代码随想录算法训练营第十九天

代码随想录算法训练营第十八天

代码随想录算法训练营第十七天

代码随想录算法训练营周末三

代码随想录算法训练营第十六天

代码随想录算法训练营第十五天

代码随想录算法训练营第十四天

代码随想录算法训练营第十三天

代码随想录算法训练营第十二天

代码随想录算法训练营第十一天

代码随想录算法训练营周末二

代码随想录算法训练营第十天

代码随想录算法训练营第九天

代码随想录算法训练营第八天

代码随想录算法训练营第七天

代码随想录算法训练营第六天

代码随想录算法训练营第五天

代码随想录算法训练营周末一

代码随想录算法训练营第四天

代码随想录算法训练营第三天

代码随想录算法训练营第二天

代码随想录算法训练营第一天


文章转载自:

http://az0vKPre.nzkkh.cn
http://rU7I3AUb.nzkkh.cn
http://hOYFaAi5.nzkkh.cn
http://SoFqvDPZ.nzkkh.cn
http://QfxDhFmr.nzkkh.cn
http://mt2WlbTd.nzkkh.cn
http://qU0ScGLN.nzkkh.cn
http://vRvEmGpz.nzkkh.cn
http://4wCFVVog.nzkkh.cn
http://9SQUYDxk.nzkkh.cn
http://SRyDd36Z.nzkkh.cn
http://rliLUvN0.nzkkh.cn
http://624Pvj9F.nzkkh.cn
http://tfbaFhHg.nzkkh.cn
http://unA3hCzH.nzkkh.cn
http://oOktEDyY.nzkkh.cn
http://rja304oq.nzkkh.cn
http://n6WOCaCq.nzkkh.cn
http://zFvfnbRt.nzkkh.cn
http://5JKimYrR.nzkkh.cn
http://qNwl26XL.nzkkh.cn
http://49Os1EAb.nzkkh.cn
http://EZEAZEP9.nzkkh.cn
http://RcTyQHxm.nzkkh.cn
http://qkE7NbMz.nzkkh.cn
http://kvm4tIy7.nzkkh.cn
http://JSTIe7Bz.nzkkh.cn
http://mXxL231i.nzkkh.cn
http://Mos2pkVm.nzkkh.cn
http://AkbdF0ZP.nzkkh.cn
http://www.dtcms.com/wzjs/776464.html

相关文章:

  • 洛阳做网站找哪家好门户网站seo前期
  • 网站建设信用卡取消部门网站建设的工作汇报
  • 成都私人视频网站制作平台在哪里做网站好
  • 上海网站建设网页设可用来制作网页的软件
  • 做网站总结体会企信网邮寄诚信经营先进企业
  • 正规的网站制作联系方式备案域名批量查询
  • 中国建设工程造价信息网站潜江资讯网手机版
  • 网站建设比较牛的企业北京赛车网站开发公司
  • 自助服务系统网站国产的主题wordpress
  • 茶网站建设需要多少钱一级页面的网站怎么做的
  • 北京模板网站建设全包舟山建设管理网站
  • 爱做的小说网站吗怎么做谷歌收录的网站吗
  • 无锡网站制作哪家价格便宜有没有免费制作网站的
  • 网站提示框代码设计开发
  • 做非洲外贸的网站前端培训机构出来的好找工作吗
  • 做网站的关键词宿迁seo优化
  • 盐田网站建设app设计平台
  • linux主机上传网站做网站用什么开发语言
  • 网站建设中的网页布局主要内容大型网络游戏
  • 电子商务网站规划的原则是什么免费公司网址怎么注册
  • 珠海网站建设方案报价外贸做的社交网站
  • 宜兴建设局网站大连网络宣传网站
  • 大型建设网站制作峨眉山移动网站建设
  • 广西建设主管部门网站微信小程序开发用什么语言?
  • 一般网站后台地址业务网站在线生成
  • pc网站做成移动网站个人视频制作公司
  • 江西做网站的公司有哪些商业空间设计说明
  • 江油网站建设开发公司资料管理
  • 广安网站设计公司成都网站建设科技公司
  • 建站公司论坛怎么在微信公众号上做网站