827. 最大人工岛

在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地。

进行填海之后,地图上最大的岛屿面积是多少?(上、下、左、右四个方向相连的 1 可形成岛屿)

示例 1:

输入: [[1, 0], [0, 1]]
输出: 3
解释: 将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。
示例 2:

输入: [[1, 1], [1, 0]]
输出: 4
解释: 将一格0变成1,岛屿的面积扩大为 4。
示例 3:

输入: [[1, 1], [1, 1]]
输出: 4
解释: 没有0可以让我们变成1,面积依然为 4。
说明:

1 <= grid.length = grid[0].length <= 50
0 <= grid[i][j] <= 1

PS:
DFS把岛屿拿出来,每个岛屿放上不同的标记
然后,把每个岛屿的面积放进数组存上,
然后再找每一个海洋,看看要是能把当前海洋变成陆地,组成的最大的面积是多少记录一下

class Solution {public int largestIsland(int[][] grid) {int[] map = new int[grid.length*grid[0].length/2+3];int index = 2;for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j] == 1) {fullIsland(grid, i, j, index++);}}}for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j] > 0) {map[grid[i][j]]++;}}}int max = 0;for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j] == 0) {int t = 1,t1=0,t2=0,t3=0,t4=0;if (i > 0 && (t1 = grid[i - 1][j]) > 1) {t += map[t1];}if (i < grid.length - 1 && (t2 = grid[i + 1][j]) > 1 && t2 !=t1) {t += map[t2];}if (j > 0 && (t3 = grid[i][j - 1]) > 1 && t2 !=t3 && t1 !=t3) {t += map[t3];}if (j < grid[0].length - 1 && (t4 = grid[i][j + 1]) > 1 && t4 != t3 && t2 != t4 && t1 != t4) {t += map[t4];}max = Math.max(max, t);}}}if (max == 0) {if (grid[0][0] == 0) {return 1;} else {return grid.length*grid[0].length;}}return max;}public void fullIsland(int[][] grid, int i, int j, int index) {grid[i][j] = index;if (i > 0 && grid[i - 1][j] == 1) {fullIsland(grid, i - 1, j, index);}if (i < grid.length - 1 && grid[i + 1][j] == 1) {fullIsland(grid, i + 1, j, index);}if (j > 0 && grid[i][j - 1] == 1) {fullIsland(grid, i, j - 1, index);}if (j < grid[0].length - 1 && grid[i][j + 1] == 1) {fullIsland(grid, i, j + 1, index);}}
}

Java实现 LeetCode 827 最大人工岛(DFS+暴力模拟)相关推荐

  1. Java实现 LeetCode 808 分汤 (暴力模拟)

    808. 分汤 有 A 和 B 两种类型的汤.一开始每种类型的汤有 N 毫升.有四种分配操作: 提供 100ml 的汤A 和 0ml 的汤B. 提供 75ml 的汤A 和 25ml 的汤B. 提供 5 ...

  2. Java实现 LeetCode 799 香槟塔 (暴力模拟)

    799. 香槟塔 我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟. 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了 ...

  3. Leetcode 827.最大人工岛(Making A Large Island)

    Leetcode 827.最大人工岛 1 题目描述(Leetcode题目链接)   在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地. 进行填海之后,地图上最大的 ...

  4. Leetcode 827. 最大人工岛 C++

    Leetcode 827. 最大人工岛 题目 在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地. 进行填海之后,地图上最大的岛屿面积是多少?(上.下.左.右四个方 ...

  5. 力扣leetcode 827. 最大人工岛

    文章目录 题目链接与描述 关键词:hash表 方法一: 运行截图 代码 结尾 题目链接与描述 https://leetcode.cn/problems/making-a-large-island/ 给 ...

  6. LeetCode 827 最大人工岛 题解

    题目 给你一个大小为 n x n 二进制矩阵 grid .最多 只能将一格 0 变成 1 .返回执行此操作后,grid 中最大的岛屿面积是多少?岛屿 由一组上.下.左.右四个方向相连的 1 形成. 分 ...

  7. 827. 最大人工岛[DFS+岛屿编号]

    题解 思路: 翻转0==>1后,需要将周围存在的岛屿的面积做累加. 因此为了方便,我们不在每一次翻转后都去计算一遍岛屿的面积,这样会使得复杂度大幅提升. 可以考虑第一次便利时,我们就将岛屿编号, ...

  8. LeetCode 827 最大人工岛 C++

    首先DFS遍历"自然"岛的时候,用一个数字位区分每个岛,具体想法是对每个岛进行编号,dfs的同时把1改为当前岛的编号,同时用一个map记录该编号岛的面积. 进入正式流程 遍历矩阵: ...

  9. 图解LeetCode——827. 最大人工岛(难度:困难)

    一.题目 给你一个大小为 n x n 二进制矩阵 grid .最多 只能将一格 0 变成 1 . 返回执行此操作后,grid 中最大的岛屿面积是多少? 岛屿 由一组上.下.左.右四个方向相连的 1 形 ...

最新文章

  1. WPS 导致 EXCEL 文件下载问题
  2. 网页页面设计如何做到极致舒适感?
  3. HOWTO:如果检测用户是从系统的“添加/删除”中卸载软件
  4. OpenCASCADE:读取和写入 IGES
  5. centos配置单网卡双IP
  6. 20191022:(leetcode习题)山脉数组的峰顶索引
  7. 如何走技术路线的研究生论文?
  8. chrome 历史版本和chrome webDriver历史版本
  9. android 常用图像密码,这几种Android图形密码最常用
  10. 正态分布之中心极限定理
  11. 艾永亮:只要改变这两点,传统健身房行业可以逃离浩沙死咒
  12. 图像标注工具python+opencv
  13. IAQI的计算工具类,根据空气检测浓度值计算IAQI值和空气质量等级(pm2.5,pm10,so2,no2,co,o3)
  14. 谷歌要抛弃Android拥抱Andromeda
  15. 2020对口高考计算机专业分数线,2020高考分数线(分数线及一分一段表)
  16. 人过三十,能不能成大事?看这10个细节足够,听话听音看人看小
  17. Java读写txt文件案例-统计学生名单
  18. Data Science 到底是什么?
  19. 目标感强的人究竟有多厉害,我们采访了100位牛人
  20. UE4网络编程学习之路02----网络架构、通信

热门文章

  1. 七、springboot 单元测试阶段 (2、JUnit5常用注解,3、断言(assertions) )
  2. Jimmy's Mini Dict 英语字典 | C# WPF ICIBA
  3. 弹簧按键触摸屏,调试日寄
  4. 联想拯救者wif开不了_联想R720怎么开不了WiFi?
  5. Python之UART串口通信
  6. Thin Plate Spline TPS薄板样条变换基础理解
  7. Python 度分秒 转 经纬度,经纬度 转 度分秒
  8. 日期及日期字符串比较大小
  9. 初学安装与配置:burp、sqllilabs搭建、sqlmap安装
  10. 中国有机化学原料制造行业运行分析及投资前景研究报告2022-2028年