代码随想录-图论

797.所有可能的路径:

. - 力扣(LeetCode)

class Solution {List<List<Integer>> ans=new LinkedList<>();List<Integer> list=new LinkedList<>();public List<List<Integer>> allPathsSourceTarget(int[][] graph) {list.add(0);backTracking(graph,0);return ans;}private void backTracking(int[][] graph,int x){if (x==graph.length-1){ans.add(new LinkedList<>(list));}for (int i = 0; i < graph[x].length; i++) {list.add(graph[x][i]);backTracking(graph,graph[x][i]);list.remove(list.size()-1);}}
}
岛屿数量:

. - 力扣(LeetCode)

深搜:

class Solution {int ans=0;int[] dx={0,1,-1,0};int[] dy={1,0,0,-1};public int numIslands(char[][] grid) {for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j]=='1'){ans++;grid[i][j]='0';backTracking(grid,i,j);}}}return ans;}private void backTracking(char[][] grid,int x,int y){for (int i = 0; i < 4; i++) {int newx=x+dx[i];int newy=y+dy[i];if (newx<0||newy<0||newx>=grid.length||newy>=grid[0].length||grid[newx][newy]=='0')continue;grid[newx][newy]='0';backTracking(grid,newx,newy);}}
}

广搜:

class Solution {int ans=0;int[] dx={0,1,-1,0};int[] dy={1,0,0,-1};public int numIslands(char[][] grid) {for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j]=='1'){ans++;bfs(grid,new boolean[grid.length][grid[0].length],i,j);}}}return ans;}private void bfs(char[][] grid,boolean[][] vis,int x,int y) {Deque<Pair> pairDeque=new LinkedList<>();pairDeque.push(new Pair(x,y));while (!pairDeque.isEmpty()){Pair pair = pairDeque.pop();int x1 = pair.x;int y1 = pair.y;for (int i = 0; i < 4; i++) {int newx=x1+dx[i];int newy=y1+dy[i];if (newx<0||newy<0||newx>=grid.length||newy>=grid[0].length||grid[newx][newy]=='0'){continue;}grid[newx][newy]='0';pairDeque.push(new Pair(newx,newy));}}}class Pair{int x;int y;public Pair(int x, int y) {this.x = x;this.y = y;}}
}
岛屿的最大面积:
 

. - 力扣(LeetCode)

 int max=0;int[] dx={0,1,-1,0};int[] dy={1,0,0,-1};int count=1;public int maxAreaOfIsland(int[][] grid) {for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j]==1){count=0;dfs(grid,i,j);max=Math.max(max,count);}}}return max;}private void dfs(int[][] grid,int x,int y){count++;grid[x][y]=0;for (int i = 0; i < 4; i++) {int newx=x+dx[i];int newy=y+dy[i];if (newx<0||newy<0||newx>=grid.length||newy>=grid[0].length||grid[newx][newy]==0){continue;}grid[newx][newy]=0;dfs(grid,newx,newy);}}public static void main(String[] args) {LeetCode695dfs leetCode695=new LeetCode695dfs();int max = leetCode695.maxAreaOfIsland(new int[][]{{1}});System.out.println(max);}
class Solution {int max=0;int[] dx={0,1,-1,0};int[] dy={1,0,0,-1};int count=1;public int maxAreaOfIsland(int[][] grid) {for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j]==1){count=0;bfs(grid,i,j);max=Math.max(count,max);}}}return max;}private void bfs(int[][] grid,int x,int y){Deque<pair> pairDeque=new LinkedList<>();pairDeque.push(new pair(x,y));grid[x][y]=0;while (!pairDeque.isEmpty()){pair pop = pairDeque.pop();count++;int x1 = pop.x;int y1 = pop.y;for (int i = 0; i < 4; i++) {int newx=x1+dx[i];int newy=y1+dy[i];if (newx<0||newy<0||newx>=grid.length||newy>=grid[0].length||grid[newx][newy]==0){continue;}grid[newx][newy]=0;pairDeque.push(new pair(newx,newy));}}}class pair{int x;int y;public pair(int x, int y) {this.x = x;this.y = y;}}
}
1020:飞地的数量:

. - 力扣(LeetCode)

class Solution {int ans=0;int[] dx={0,1,-1,0};int[] dy={1,0,0,-1};boolean flag=true;public int numEnclaves(int[][] grid) {for (int i = 0; i < grid[0].length; i++) {if (grid[0][i]==1){grid[0][i]=0;dfs(grid,0,i);}if (grid[grid.length-1][i]==1){grid[grid.length-1][i]=0;dfs(grid,grid.length-1,i);}}for (int i = 0; i < grid.length; i++) {if (grid[i][0]==1){grid[i][0]=0;dfs(grid,i,0);}if (grid[i][grid[0].length-1]==1){grid[i][grid[0].length-1]=0;dfs(grid,i,grid[0].length-1);}}for (int i = 1; i < grid.length-1; i++) {for (int j = 1; j < grid[0].length-1; j++) {if (grid[i][j]==1) ans++;}}return ans;}private void dfs(int[][] grid,int x,int y){for (int i = 0; i < 4; i++) {int newx=x+dx[i];int newy=y+dy[i];if (newx<0||newy<0||newx>=grid.length||newy>=grid[0].length||grid[newx][newy]==0){continue;}grid[newx][newy]=0;dfs(grid,newx,newy);}}
}

 这题广搜更胜一筹:


public class LeetCode1020bfs {int ans=0;int[] dx={0,1,-1,0};int[] dy={1,0,0,-1};public int numEnclaves(int[][] grid) {for (int i = 0; i < grid[0].length; i++) {if (grid[0][i]==1){grid[0][i]=0;bfs(grid,0,i);}if (grid[grid.length-1][i]==1){grid[grid.length-1][i]=0;bfs(grid,grid.length-1,i);}}for (int i = 0; i < grid.length; i++) {if (grid[i][0]==1){grid[i][0]=0;bfs(grid,i,0);}if (grid[i][grid[0].length-1]==1){grid[i][grid[0].length-1]=0;bfs(grid,i,grid[0].length-1);}}for (int i = 1; i < grid.length-1; i++) {for (int j = 1; j < grid[0].length-1; j++) {if (grid[i][j]==1) ans++;}}return ans;}private void bfs(int[][] grid,int x,int y){Deque<pair> deque=new LinkedList<>();deque.push(new pair(x,y));grid[x][y]=0;while (!deque.isEmpty()){pair pop = deque.pop();int x1 = pop.x;int y1 = pop.y;for (int i = 0; i < 4; i++) {int newx=x1+dx[i];int newy=y1+dy[i];if (newx<0||newy<0||newx>=grid.length||newy>=grid[0].length||grid[newx][newy]==0){continue;}grid[newx][newy]=0;deque.push(new pair(newx,newy));}}}class pair{int x;int y;public pair(int x, int y) {this.x = x;this.y = y;}}
}
被围绕的区域:

 . - 力扣(LeetCode)

class Solution {int[] dx={0,1,-1,0};int[] dy={1,0,0,-1};public void solve(char[][] board) {int[][] flag=new int[board.length][board[0].length];for (int i = 0; i < board.length; i++) {if (board[i][0]=='O'){dfs(board,i,0,flag);}if (board[i][board[0].length-1]=='O'){dfs(board,i,board[0].length-1,flag);}}for (int i = 0; i < board[0].length; i++) {if (board[0][i]=='O'){dfs(board,0,i,flag);}if (board[board.length-1][i]=='O'){dfs(board,board.length-1,i,flag);}}for (int i = 1; i <board.length-1 ; i++) {for (int j = 1; j < board[0].length-1; j++) {if (flag[i][j]==0&&board[i][j]=='O'){board[i][j]='X';}}}}private void dfs(char[][] board, int x, int y, int[][] flag) {flag[x][y]=1;for (int i = 0; i < 4; i++) {int newx=x+dx[i];int newy=y+dy[i];if (newx<0||newy<0||newx>=board.length||newy>=board[0].length||board[newx][newy]=='X'||flag[newx][newy]==1){continue;}dfs(board,newx,newy,flag);}}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABC318 F - Octopus

解题思路 对于每个宝藏维护个区间&#xff0c;答案一定在这些区间中对于每个区间的端点由小到大排序对于每个点进行判断&#xff0c;若当前位置合法&#xff0c;则该点一定为一个右端点则该点到前一个端点之间均为合法点若前一个点不合法&#xff0c;则一定是某一个区间限制的…

Vue3:使用Pinia存储、读取、修改数据

一、存储数据 Pinia插件中&#xff0c;存储数据的配置项是state count.ts import {defineStore} from piniaexport const useCountStore defineStore(count,{// 真正存储数据的地方state(){return {sum:6}} })loveTalk.ts import {defineStore} from piniaexport const use…

Xen Server 8 Install

Xen Sevrer 前言 XenServer&#xff08;以前称为 Citrix Hypervisor&#xff09;是业界领先的平台&#xff0c;实现了经济高效的桌面、服务器和云虚拟化基础结构。XenServer 支持任意规模或类型的组织整合计算资源&#xff0c;以及将计算资源转换为虚拟工作负载&#xff0c;从…

RESTful API说明

RESTful API&#xff08;Representational State Transfer&#xff09;是一种用于设计网络应用程序的架构风格。它基于 HTTP 协议&#xff0c;通过使用统一的资源标识符&#xff08;URL&#xff09;来访问和操作资源。 RESTful API 的设计原则包括&#xff1a; 资源标识符&am…

SpringBoot2升级到SpringBoot3总结

最近公司在做监控日志平台的迁移&#xff0c;从NewRelic迁移到Dynatrace&#xff0c;为了配合迁移&#xff0c;有一个前提就是把SpringBoot2升级到SpringBoot3。 我们这边的项目大多数都是KotlinSpringBoot2.X的技术栈&#xff0c;现在要全部升级到最新的SpringBoot3.2.2或者S…

c++协程详解(二)

前言 这是c协程实现第二篇&#xff0c;这里开始我们将开始真正意义上开始实现协程。对协程基础流程不清楚的&#xff0c;可以看我的第一篇。 后续可能需要一定的模板知识&#xff0c;可以看下我的模板的文章&#xff0c;那些知识就完全够用了。本篇将实现一个协程封装的异步任…

Redis慢日志

SLOWLOG 是用来读取和重置 Redis 慢查询日志的命令&#xff0c;Redis 2.2.12 版本开始支持 1.Redis 慢查询日志概述 客户端从发送命令到获取返回结果经过了以下几个步骤&#xff1a; 1. 客户端发送命令 2. 该命令进入 Redis 队列排队等待执行 3. Redis 开始执行命令 - Red…

浅析JavaWeb内存马基础原理与查杀思路

文章目录 前言Java内存马内存马分类&原理JavaWeb三大组件注入Servlet内存马注入Filter型内存马JAVA Agent内存马 哥斯拉木马0x01 WebShell0x02 MemShell0x03 FilterShell0x04 Arthas排查0x05 scanner查杀 总结 前言 几年前写过《Web安全-一句话木马》&#xff0c;主要介绍…

PurpleKeep:提供Azure管道以创建基础设施并执行Atomic测试

关于PurpleKeep PurpleKeep是一款功能强大的安全测试自动化工具&#xff0c;该工具能够通过提供Azure管道以创建基础设施&#xff0c;并帮助广大研究人员执行Atomic测试。 随着攻击技术种类的迅速增加&#xff0c;以及EDR&#xff08;端点检测和响应&#xff09;和自定义检测规…

二叉树层序遍历 及相关题目

1&#xff0c;力扣102 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例…

Canvas背景绘制-24

本节会详细介绍下&#xff0c;如何绘制面板的背景。 概述 常用的技术称为图块复制(blitting)&#xff0c;即从离屏缓冲区中将内容发生变化的那部分背景图像复制到屏幕上&#xff0c;还有其它两种方法是将所有内容擦除并重新绘制&仅重绘内容发生变化的那部分区域。一般是用…

网络:HTTP协议

目录 序列化与反序列化 守护进程 网络计算器的实现 HTTP协议 http的代码演示 HTTPS 初步理解三次握手&#xff0c;四次挥手 ①tcp是面向连接的通信协议&#xff0c;在通信之前&#xff0c;需要进行3次握手&#xff0c;来进行连接的建立(谁connect谁握手) ②当tcp在断开…

稀碎从零算法笔记Day35-LeetCode:字典序的第K小数字

要考虑完结《稀碎从零》系列了哈哈哈 这道题和【LC.42 接雨水】&#xff0c;我愿称之为【笔试界的颜良&文丑】 题型&#xff1a;字典树、前缀获取、数组、树的先序遍历 链接&#xff1a;440. 字典序的第K小数字 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1…

Linux是怎么发送一个网络包的?

目录 摘要 1 从 send 开始 2 传输层 3 网络层 4 网络接口层 4.1 邻居子系统 4.2 网络设备子系统 4.3 软中断发送剩余的 skb 4.4 硬中断又触发软中断 总结 摘要 一个网络包的发送&#xff0c;始于应用层&#xff0c;经层层协议栈的封装&#xff0c;终于网卡。今天来循…

ubuntu18.04图形界面卡死,鼠标键盘失灵, 通过MAC共享网络给Ubuntu解决!

ubuntu18.04图形界面卡死&#xff0c;鼠标键盘失灵&#xff0c; 通过MAC共享网络给Ubuntu解决&#xff01; 1. 尝试从卡死的图形界面切换到命令行界面2. 进入bios和grub页面3. 更改Grub中的设置&#xff0c;以进入命令行4. 在命令行页面解决图形界面卡死的问题5. Mac共享WI-FI网…

用友 NC saveXmlToFIleServlet 任意文件上传漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友 NC saveXmlToFIleServlet接口处存在…

【MySQL】数据库的基本操作

目录 一、数据库的库操作 二、数据库的表操作 一、数据库的库操作 数据库的创建 create database (if not exists) 库名 这里的if not exists 是一个判断用的&#xff0c;如果数据库存在&#xff0c;就不执行语句&#xff0c;如果数据库不存在&#xff0c;则执行该语句。 创建…

vulhub中Apache Solr Velocity 注入远程命令执行漏洞复现 (CVE-2019-17558)

Apache Solr 是一个开源的搜索服务器。 在其 5.0.0 到 8.3.1版本中&#xff0c;用户可以注入自定义模板&#xff0c;通过Velocity模板语言执行任意命令。 访问http://your-ip:8983即可查看到一个无需权限的Apache Solr服务。 1.默认情况下params.resource.loader.enabled配置…

C++实现vector

目录 前言 1.成员变量 2.成员函数 2.1构造函数 2.2析构函数 2.3begin,end 2.4获取size和capacity 2.5函数重载【】 2.6扩容reserve 2.7resize 2.8insert 2.9删除 2.10尾插、尾删 3.0拷贝构造函数 3.1赋值运算符重载 前言 自主实现C中vector大部分的功能可以使我们更好的理解并使…

红黑树介绍与模拟实现(insert+颜色调整精美图示超详解哦)

红黑树 引言红黑树的介绍实现结点类insert搜索插入位置插入调整当parent为gparent的左子结点当parent为gparent的右子结点 参考源码测试红黑树是否合格总结 引言 在上一篇文章中我们认识了高度平衡的平衡二叉树AVL树&#xff1a;戳我看AVL树详解哦 &#xff08;关于旋转调整的…