695. 島嶼的最大面積
阿新 • • 發佈:2021-12-13
給你一個大小為 m x n 的二進位制矩陣 grid 。
島嶼是由一些相鄰的1(代表土地) 構成的組合,這裡的「相鄰」要求兩個 1 必須在 水平或者豎直的四個方向上 相鄰。你可以假設grid 的四個邊緣都被 0(代表水)包圍著。
島嶼的面積是島上值為 1 的單元格的數目。
計算並返回 grid 中最大的島嶼面積。如果沒有島嶼,則返回面積為 0 。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/max-area-of-island
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
心之所向,素履以往 生如逆旅,一葦以航import java.util.LinkedList; class Solution { private int[] dx = {0, 1, 0, -1}; private int[] dy = {1, 0, -1, 0}; public int maxAreaOfIsland(int[][] grid) { if (grid == null || grid.length == 0 || grid[0].length == 0) { return 0; } int ret = 0; for (int i = 0; i < grid.length; ++i) { for (int j = 0; j < grid[i].length; ++j) { if (grid[i][j] == 1) { int count = 0; LinkedList<int[]> queue = new LinkedList<>(); grid[i][j] = 0; queue.offer(new int[]{i, j}); while (!queue.isEmpty()) { int[] point = queue.poll(); count++; for (int k = 0; k < 4; ++k) { int x = dx[k] + point[0]; int y = dy[k] + point[1]; if (x >= 0 && x < grid.length && y >= 0 && y < grid[0].length && grid[x][y] == 1) { grid[x][y] = 0; queue.offer(new int[]{x, y}); } } } ret = Math.max(ret, count); } } } return ret; } }