
| import java.util.HashMap; |
| import java.util.HashSet; |
| |
| class Solution { |
| public int largestIsland(int[][] grid) { |
| |
| |
| int ans = 0; |
| int cnt = 2; |
| int m = grid.length; |
| int n = grid[0].length; |
| HashMap<Integer, Integer> map = new HashMap<>(); |
| for (int i = 0; i < m; i++) { |
| for (int j = 0; j < n; j++) { |
| if (grid[i][j] == 1) { |
| f(i, j, grid, cnt++); |
| } |
| } |
| } |
| |
| for (int i = 0; i < m; i++) { |
| for (int j = 0; j < n; j++) { |
| if (grid[i][j] > 1) { |
| int cur = grid[i][j]; |
| map.put(cur, map.getOrDefault(cur, 0) + 1); |
| } |
| |
| } |
| } |
| if (map.getOrDefault(2, 0) == m * n) { |
| |
| return m * n; |
| } |
| |
| for (int i = 0; i < m; i++) { |
| for (int j = 0; j < n; j++) { |
| if (grid[i][j] == 0) { |
| ans = Math.max(ans, get(i, j, grid, map)); |
| } |
| } |
| } |
| return ans + 1; |
| } |
| |
| public int get(int i, int j, int[][] grid, HashMap<Integer, Integer> map) { |
| HashSet<Integer> hashSet = new HashSet(); |
| |
| if (i - 1 >= 0) { |
| hashSet.add(grid[i - 1][j]); |
| } |
| if (i + 1 < grid.length) { |
| hashSet.add(grid[i + 1][j]); |
| } |
| if (j - 1 >= 0) { |
| hashSet.add(grid[i][j - 1]); |
| } |
| if (j + 1 < grid[0].length) { |
| hashSet.add(grid[i][j + 1]); |
| } |
| int ans = 0; |
| for (Integer cnt : hashSet) { |
| ans += map.getOrDefault(cnt, 0); |
| } |
| return ans; |
| |
| } |
| |
| public void f(int i, int j, int[][] grid, int cnt) { |
| if (i < 0 || j < 0 || i >= grid.length || j >= grid[0].length || grid[i][j] != 1) { |
| return; |
| } |
| grid[i][j] = cnt; |
| f(i + 1, j, grid, cnt); |
| f(i - 1, j, grid, cnt); |
| f(i, j + 1, grid, cnt); |
| f(i, j - 1, grid, cnt); |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统