力扣-图论-13【算法学习day.63】

ops/2024/12/21 2:42:00/

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.水域大小

题目链接:面试题 16.19. 水域大小 - 力扣(LeetCode)

分析:简单的dfs

java">class Solution {int[][] land;int n,m;int[][] flag;ArrayList<Integer> list = new ArrayList<>();int flag2 = 0;public int[] pondSizes(int[][] land) {this.land = land;n = land.length;m = land[0].length;flag = new int[n][m];for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){if(flag[i][j]==0&&land[i][j]==0){flag2 = 0;recursion(i,j);//  System.out.println("------------------------");list.add(flag2);}}}flag2 = 0;int[] ans = new int[list.size()];for(int a:list){ans[flag2++] = a;}Arrays.sort(ans);return ans;}public void recursion(int x,int y){// System.out.println(x+"          "+y);flag[x][y] = 1;flag2++;if(x+1<n&&land[x+1][y]==0&&flag[x+1][y]==0){recursion(x+1,y);}if(x-1>=0&&land[x-1][y]==0&&flag[x-1][y]==0){recursion(x-1,y);}if(y+1<m&&land[x][y+1]==0&&flag[x][y+1]==0){recursion(x,y+1);}if(y-1>=0&&land[x][y-1]==0&&flag[x][y-1]==0){recursion(x,y-1);}if(x+1<n&&y+1<m&&land[x+1][y+1]==0&&flag[x+1][y+1]==0){recursion(x+1,y+1);}if(x+1<n&&y-1>=0&&land[x+1][y-1]==0&&flag[x+1][y-1]==0){recursion(x+1,y-1);}if(x-1>=0&&y+1<m&&land[x-1][y+1]==0&&flag[x-1][y+1]==0){recursion(x-1,y+1);}if(x-1>=0&&y-1>=0&&land[x-1][y-1]==0&&flag[x-1][y-1]==0){recursion(x-1,y-1);}}
}

2.主题空间

题目链接:LCS 03. 主题空间 - 力扣(LeetCode)

题面:

分析:dfs,只不过多一些考虑情况 

代码:

java">class Solution {int n,m;int ans = 0;char[][] map;int[][] flag;int flag2 = 0;int islian = 0;public int largestArea(String[] grid) {n = grid.length;m = grid[0].length();map = new char[n][m];flag = new int[n][m];int count = 0;for(String str:grid){map[count++] = str.toCharArray();}for(int i = 1;i<n-1;i++){for(int j = 1;j<m-1;j++){if(map[i][j]!='0'&&flag[i][j]==0){flag2 = 0;islian = 0;recursion(i,j,map[i][j]);if(islian==0){ans = Math.max(ans,flag2);}}}            }return ans;}public void recursion(int x,int y,char u){flag2++;flag[x][y] = 1;if(x==0||x==n-1||y==0||y==m-1)islian = 1;if(x+1<n){if(map[x+1][y]==u&&flag[x+1][y]==0){recursion(x+1,y,u);}if(map[x+1][y]=='0')islian=1;}if(x-1>=0){if(map[x-1][y]==u&&flag[x-1][y]==0){recursion(x-1,y,u);}if(map[x-1][y]=='0')islian = 1;}if(y+1<m){if(map[x][y+1]==u&&flag[x][y+1]==0){recursion(x,y+1,u);}if(map[x][y+1]=='0')islian = 1;}if(y-1>=0){if(map[x][y-1]==u&&flag[x][y-1]==0){recursion(x,y-1,u);}if(map[x][y-1]=='0')islian = 1;}}
}

后言

上面是力扣图论专题,下一篇是其他的习题,希望有所帮助,一同进步,共勉!


http://www.ppmy.cn/ops/143643.html

相关文章

共享模型之无锁(乐观锁,CAS,原子类,LongAdder)

目录 共享模型之无锁一&#xff1a;保护共享资源1&#xff1a;加锁实现2&#xff1a;不加锁实现 二&#xff1a;cascas与volatile为什么无锁的效率高cas的特点 三&#xff1a;原子类1&#xff1a;原子整数&#xff08;AtomicInteger&#xff09;updateAndGet 2&#xff1a;原子…

elasticsearch 7.6.2版本即使使用wildcard模糊查询,也毫无过滤效果分析

es使用wildcard方法查询attacker_ip不起效果 curl -X GET "localhost:9200/<index_name>/_search?pretty" -H Content-Type: application/json -d { "from": 0, "size": 20, "timeout": "60s", "query"…

Springboot 整合 Java DL4J 打造金融风险评估系统

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s…

GO OSS 前端直传 Presign

go 服务端代码 官方文档 阿里云直传 参考代码 注意事项&#xff1a; header不需要传&oss.PutObjectRequest 不要写成 &oss.GetObjectRequest handler package handlerimport ("goshop-api/oss-web/utils""net/http""github.com/gin-g…

thinkphp:try-catch捕获异常

使用简单的例子&#xff0c;实现了一个简单的try-catch捕获异常的实例 //开始事务Db::startTrans(); try{ //有异常抛出异常 if(存在错误){ throw new \Exception("异常信息"); } // 提交事务 Db::commit(); // 返回成功信息 ... } catch (\…

[SAP ABAP] 将内表数据转换为HTML格式

从sflight数据库表中检索航班信息&#xff0c;并将这些信息转换成HTML格式&#xff0c;然后下载或显示在前端 开发步骤 ① 自定义一个数据类型 ty_sflight 来存储航班信息 ② 声明内表和工作区变量&#xff0c;用于存储表头、字段、HTML内容和航班详细信息以及创建字段目录lt…

中阳科技的量化交易模型:从理论到实践的全面探索

在当今金融市场中&#xff0c;量化交易已经成为不可忽视的投资方式。中阳科技凭借先进的算法模型和技术能力&#xff0c;率先在这一领域取得突破&#xff0c;为投资者提供更高效、更智能的交易解决方案。本文将从量化交易模型的核心特点、技术支持和市场应用等方面&#xff0c;…

Docker 容器中启用 SSH 服务

在 Docker 容器中运行 SSH 服务需要一些调整&#xff0c;因为 Docker 容器通常使用 init 系统而不是完整的 systemd。以下是配置 SSH 服务在 Docker Ubuntu 容器中运行的步骤&#xff1a; 1. 安装 SSH 服务 如果还未安装 OpenSSH&#xff0c;请先安装&#xff1a; apt update…