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

网站联盟怎么做企业网站免费认证

网站联盟怎么做,企业网站免费认证,湖州网站seo优化,蚌埠网站建设兼职卡码网题目: 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://www.dtcms.com/wzjs/793850.html

相关文章:

  • 网站制作xiu021餐饮团购网站建设
  • 网站统计模块学校建设网站的目的
  • 来个黑黑的网站wordpress 发布时间不对
  • 做网站的复式照片网站建设网页设计公司
  • 扫二维码进入个人的购物网站如何做网站建立需要多久
  • 厦门企业官方网站建设高校移动门户网站建设
  • 阴阳师网站建设网络营销方案策划书
  • 洛阳做网站汉狮网络徐州网站建设咨询
  • 知名网站建设联系电话网站开发 请示
  • 建设工程监理招标网站网络推广和竞价推广有什么区别
  • 网站搭建计划书在线设计平台用户分析
  • 哈尔滨整站网络规划设计师教程第二版
  • 做图的赚钱的网站许昌网站建设汉狮套餐
  • 做网站推广汉狮网络宁津哪个网络公司做网站比较好
  • 为什么企业建设银行网站打不开建设银行积分商城网站
  • canvas 特效网站网站建设的基本目标
  • 购物网站界面设计策划中国互联网头部企业
  • wordpress 制作网站衡阳网站网站建设
  • 最佳网站制作模板怀化网站建设怎么收费
  • 东莞化妆品网站建设网页设计代码爱心
  • 韩国做hh网站一流的微商城网站建设
  • 西安市城乡建设网站腾讯如何做网站
  • 服务好质量好的网站制作做软件贵还是做网站贵
  • 石家庄青园网站建设大学软件开发需要学什么
  • 网站开发心得500字丫个网站建设博客
  • 软件科技公司网站模板做短视频网站用哪家cms
  • 深圳华企网站建设外链相册
  • 文化传播做网站推广吗辽阳银梦网站建设
  • 清华大学绿色大学建设网站肇庆网站建设方案
  • 做电商在什么网站怎么做qq靓号网站