天津网站优化多少钱,优设网的吉祥物,免费做优化的网站,嘉兴seo扣费695. 岛屿的最大面积
题目#xff1a;给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0#xff08;代表水#xff0…695. 岛屿的最大面积
题目给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0代表水包围着。岛屿的面积是岛上值为 1 的单元格的数目。
计算并返回 grid 中最大的岛屿面积。如果没有岛屿则返回面积为 0 题目链接695. 岛屿的最大面积 和岛屿数量很像 这里比较一个最值就行
class Solution {public int[][] move{{0,1},{0,-1},{1,0},{-1,0}};public boolean[][] visited;public int maxAreaOfIsland(int[][] grid) {int max0;visitednew boolean[grid.length][grid[0].length];for(int i0;igrid.length;i){for(int j0;jgrid[0].length;j){if(!visited[i][j]grid[i][j]1){maxMath.max(max,bfs(grid,i,j)); }}}return max; }public int bfs(int[][] grid,int x,int y){int num1;Queueint[] queuenew LinkedList();queue.offer(new int[]{x,y});visited[x][y]true;while(!queue.isEmpty()){int[] nodequeue.poll();for(int p0;p4;p){int nextxnode[0]move[p][0];int nextynode[1]move[p][1];if(nextx0||nextxgrid.length||nexty0||nextygrid[0].length){continue;}if(!visited[nextx][nexty]grid[nextx][nexty]1){queue.offer(new int[]{nextx,nexty});visited[nextx][nexty]true;num;}}}return num;}
}1020. 飞地的数量
题目给你一个大小为 m x n 的二进制矩阵 grid 其中 0 表示一个海洋单元格、1 表示一个陆地单元格。一次移动是指从一个陆地单元格走到另一个相邻上、下、左、右的陆地单元格或跨过 grid 的边界。返回网格中无法在任意次数的移动中离开网格边界的陆地单元格的数量。
题目链接 [1020. 飞地的数量](https://leetcode.cn/problems/number-of-enclaves/description/) 遇到边界则记录 不能遇到边界就退出 需要找到所有联通的点进行标记
class Solution {public int[][] move{{0,1},{0,-1},{1,0},{-1,0}};public boolean[][] visited;public boolean flag;public int numEnclaves(int[][] grid) {int nums0;visitednew boolean[grid.length][grid[0].length];for(int i0;igrid.length;i){for(int j0;jgrid[0].length;j){if(!visited[i][j]grid[i][j]1){flagfalse;int numbfs(grid,i,j);if(flagfalse){numsnum;} }}}return nums; }public int bfs(int[][] grid,int x,int y){if(x0||xgrid.length-1||y0||ygrid[0].length-1){flagtrue;}int num1;Queueint[] queuenew LinkedList();queue.offer(new int[]{x,y});visited[x][y]true;while(!queue.isEmpty()){int[] nodequeue.poll();for(int p0;p4;p){int nextxnode[0]move[p][0];int nextynode[1]move[p][1];if(nextx0||nextxgrid.length||nexty0||nextygrid[0].length){continue;}if(!visited[nextx][nexty]grid[nextx][nexty]1){if(nextx0||nextxgrid.length-1||nexty0||nextygrid[0].length-1) {flagtrue;}queue.offer(new int[]{nextx,nexty});visited[nextx][nexty]true;num;}}}return num;}
}