力扣-图论-16【算法学习day.66】

ops/2024/12/23 8:59:19/

前言

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


习题

1.统计封闭岛屿的数目

题目链接:1254. 统计封闭岛屿的数目 - 力扣(LeetCode)

题面:

代码:

java">class Solution {int[][] grid;int[][] flag;int n,m;int ans = 0;int flag2 = 0;public int closedIsland(int[][] grid) {this.grid = grid;n = grid.length;m = grid[0].length;flag = new int[n][m];for(int i = 1;i<n-1;i++){for(int j = 1;j<m-1;j++){if(grid[i][j]==0&&flag[i][j]==0){flag2 = 0;recursion(i,j);if(flag2==0)ans++;}}}return ans;}public void recursion(int x,int y){flag[x][y] = 1;if(x+1<n){if(grid[x+1][y]==0&&flag[x+1][y]==0){recursion(x+1,y);}if(grid[x+1][y]==0&&x+1==n-1)flag2 = 1;}if(x-1>=0){if(grid[x-1][y]==0&&flag[x-1][y]==0){recursion(x-1,y);}if(grid[x-1][y]==0&&x-1==0)flag2 = 1;}if(y+1<m){if(grid[x][y+1]==0&&flag[x][y+1]==0){recursion(x,y+1);}if(grid[x][y+1]==0&&y+1==m-1)flag2 = 1;}if(y-1>=0){if(grid[x][y-1]==0&&flag[x][y-1]==0){recursion(x,y-1);}if(grid[x][y-1]==0&&y-1==0)flag2 = 1;}}
}

2.被围绕的区域

题目链接:130. 被围绕的区域 - 力扣(LeetCode)

题面:

分析:这题可以换个思路从边界遍历,然后dfs标记所有和边界中‘O’相连的‘O’ 

代码:

java">class Solution {char[][] board;int n,m;int[][] flag;int flag2;public void solve(char[][] board) {this.board = board;n = board.length;m = board[0].length;flag = new int[n][m];for(int i = 0;i<n;i++){if(board[i][0]=='O'&&flag[i][0]==0){recursion(i,0);}if(board[i][m-1]=='O'&&flag[i][m-1]==0){recursion(i,m-1);}}for(int i = 1;i<m-1;i++){if(board[0][i]=='O'&&flag[0][i]==0){recursion(0,i);}if(board[n-1][i]=='O'&&flag[n-1][i]==0){recursion(n-1,i);}}for(int i = 1;i<n-1;i++){for(int j = 1;j<m-1;j++){if(board[i][j]=='O'&&flag[i][j]==0){board[i][j] = 'X';}}}}public void recursion(int x,int y){flag[x][y] = 1;if(x+1<n&&board[x+1][y]=='O'&&flag[x+1][y]==0){recursion(x+1,y);}if(x-1>=0&&board[x-1][y]=='O'&&flag[x-1][y]==0){recursion(x-1,y);}if(y+1<m&&board[x][y+1]=='O'&&flag[x][y+1]==0){recursion(x,y+1);}if(y-1>=0&&board[x][y-1]=='O'&&flag[x][y-1]==0){recursion(x,y-1);}}
}

3.统计子岛屿

题目链接:1905. 统计子岛屿 - 力扣(LeetCode)

题面:

代码:

java">class Solution {int[][] grid1;int[][] grid2;int n,m;int[][] flag;int flag2 = 0;int ans = 0;public int countSubIslands(int[][] grid1, int[][] grid2) {this.grid1 = grid1;this.grid2 = grid2;n  = grid1.length;m  = grid1[0].length;flag = new int[n][m];for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){if(grid2[i][j]==1&&flag[i][j]==0){flag2 = 0;recursion(i,j);// System.out.println("_______________________________");if(flag2==0)ans++;}}}return ans;}public void recursion(int x,int y){// System.out.println(x+"                 "+y);if(grid1[x][y]!=grid2[x][y])flag2 = 1;flag[x][y] = 1;if(x+1<n&&grid2[x+1][y]==1&&flag[x+1][y]==0){recursion(x+1,y);}if(x-1>=0&&grid2[x-1][y]==1&&flag[x-1][y]==0){recursion(x-1,y);}if(y+1<m&&grid2[x][y+1]==1&&flag[x][y+1]==0){recursion(x,y+1);}if(y-1>=0&&grid2[x][y-1]==1&&flag[x][y-1]==0){recursion(x,y-1);}}   
}

后言

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


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

相关文章

渗透测试-前端加密分析之RSA加密登录(密钥来源服务器)

本文是高级前端加解密与验签实战的第6篇文章&#xff0c;本系列文章实验靶场为Yakit里自带的Vulinbox靶场&#xff0c;本文讲述的是绕过RSA加密来爆破登录。 分析 这里的代码跟上文的类似&#xff0c;但是加密的公钥是通过请求服务端获取的 http://127.0.0.1:8787/crypto/js/…

RunCam WiFiLink连接手机图传测试

RunCam WiFiLink中文手册从这里下载 一、摄像头端 1.连接天线&#xff08;易忘&#xff09; 2.打开摄像头前面的盖子&#xff08;易忘&#xff09; 3.接上直流电源&#xff0c;红线为正&#xff0c;黑线为负 4.直流电源设置电压为14v&#xff0c;电流为3.15A&#xff0c; 通…

007 Qt_按钮类控件

文章目录 前言push ButtonRadio ButtionCheck BoxToolButton 小结 前言 本文将会向你介绍按钮类控件的属性与使用 push Button QPushButton 表示⼀个按钮&#xff0c;QPushButton 继承自 QAbstractButton &#xff0c;这个类是⼀个抽象类. 是其他按钮的父类 在QAbstractBut…

iOS应用网络安全之HTTPS

1. HTTPS/SSL的基本原理 安全套接字层 (Secure Socket Layer, SSL) 是用来实现互联网安全通信的最普遍的标准。Web 应用程序使用 HTTPS&#xff08;基于 SSL 的 HTTP&#xff09;&#xff0c;HTTPS 使用数字证书来确保在服务器和客户端之间进行安全、加密的通信。在 SSL 连接中…

MONI后台管理系统-swagger3(springdoc-openapi)集成

springdoc-openapi Java 库有助于使用 Spring Boot 项目自动生成 API 文档。springdoc-openapi 通过在运行时检查应用程序来根据 Spring 配置、类结构和各种注释推断 API 语义。 该库会自动生成 JSON/YAML 和 HTML 格式的页面文档。生成的文档可以使用swagger-api注释进行补充。…

c4d动画怎么导出mp4视频,c4d动画视频格式设置

宝子们&#xff0c;今天来给大家讲讲 C4D 咋导出mp4视频的方法。通过用图文教程的形式给大家展示得明明白白的&#xff0c;让你能轻松理解和掌握&#xff0c;不管是理论基础&#xff0c;还是实际操作和技能技巧&#xff0c;都能学到&#xff0c;快速入门然后提升自己哦。 c4d动…

移动魔百盒中的 OpenWrt作为旁路由 安装Tailscale并配置子网路由实现在外面通过家里的局域网ip访问内网设备

移动魔百盒中的 OpenWrt作为旁路由 安装Tailscale并配置子网路由实现在外面通过家里的局域网ip访问内网设备 一、前提条件 确保路由器硬件支持&#xff1a; OpenWrt 路由器需要足够的存储空间和 CPU 性能来运行 Tailscale。确保设备架构支持 Tailscale 二进制文件&#xff0c;例…

入门靶机:DC-1的渗透测试

1、收集信息 使用 nmap 探测到靶机的地址为 192.168.56.138 nmap -sn 192.168.56.0/24 # 得到靶机ip为&#xff1a;192.168.56.138 1.1 nmap 扫描 nmap 扫描端口 # Nmap 7.92 scan initiated Thu Dec 19 07:50:24 2024 as: nmap -sT --min-rate 10000 -o check/138port 19…