leetcode 694 不同的岛屿数量
不同的岛屿数量
其中有四个岛屿,但是左下角和右上角的岛屿形状相同,所以不同的岛屿共有三个,算法返回 3。
考点:
1. DFS
2. 序列化
3. 去重操作
public class Solution { /** * @param grid: a list of lists of integers * @return: return an integer, denote the number of distinct islands */ public int numberofDistinctIslands(int[][] grid) { // write your code here int m = grid.length; int n = grid[0].length; HashSet<String> islands = new HashSet<>(); for(int i = 0; i< m; i++){ for(int j = 0; j<n;j++){ if(grid[i][j] == 1){ StringBuilder sb = new StringBuilder(); dfs(grid, i, j, sb, 0); islands.add(sb.toString()); } } } return islands.size(); } private void dfs(int[][] grid , int i , int j , StringBuilder sb, int dir){ int m = grid.length; int n = grid[0].length; if (i < 0 || j < 0 || i >= m||j>= n || grid[i][j] == 0){ return; } grid[i][j] = 0; sb.append(dir).append(','); dfs(grid,i-1,j,sb,1);//上 dfs(grid,i+1,j,sb,2);//下 dfs(grid,i,j-1,sb,3);//左 dfs(grid, i, j+1, sb, 4);//右 sb.append(-dir).append(','); } }
本文来自博客园,作者:{zhongweiLeex},转载请注明原文链接:{https://www.cnblogs.com/lzw6/}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了