力扣-图论-18【算法学习day.68】

server/2024/12/21 17:06:15/

前言

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


习题

1.扫雷游戏

题目链接:529. 扫雷游戏 - 力扣(LeetCode)分析:注意只有相邻没有地雷的方块被挖后继续递归下去

代码:

java">class Solution {char[][] board;int[][] flag;int n, m;public char[][] updateBoard(char[][] board, int[] click) {this.board = board;n = board.length;m = board[0].length;flag = new int[n][m];if (board[click[0]][click[1]] == 'M') {board[click[0]][click[1]] = 'X';return board;}recursion(click[0], click[1]);return board;}public void recursion(int x,int y){flag[x][y] = 1;char c = line(x,y);// System.out.println(x+"           "+y+"          "+c);if(c=='0'){board[x][y] = 'B';if(x+1<n){if(board[x+1][y]=='E'&&flag[x+1][y]==0){recursion(x+1,y);}if(y+1<m&&board[x+1][y+1]=='E'&&flag[x+1][y+1]==0){recursion(x+1,y+1);}if(y-1>=0&&board[x+1][y-1]=='E'&&flag[x+1][y-1]==0){recursion(x+1,y-1);}}if(x-1>=0){if(board[x-1][y]=='E'&&flag[x-1][y]==0){recursion(x-1,y);}if(y+1<m&&board[x-1][y+1]=='E'&&flag[x-1][y+1]==0){recursion(x-1,y+1);}if(y-1>=0&&board[x-1][y-1]=='E'&&flag[x-1][y-1]==0){recursion(x-1,y-1);}}if(y-1>=0&&board[x][y-1]=='E'&&flag[x][y-1]==0){recursion(x,y-1);}if(y+1<m&&board[x][y+1]=='E'&&flag[x][y+1]==0){recursion(x,y+1);}}else{board[x][y] = c;}}public char line(int x,int y){int flag  = 0;if(x+1<n){if(board[x+1][y]=='M')flag++;if(y+1<m&&board[x+1][y+1]=='M')flag++;if(y-1>=0&&board[x+1][y-1]=='M')flag++;}if(x-1>=0){if(board[x-1][y]=='M')flag++;if(y+1<m&&board[x-1][y+1]=='M')flag++;if(y-1>=0&&board[x-1][y-1]=='M')flag++;}if(y-1>=0&&board[x][y-1]=='M'){flag++;}if(y+1<m&&board[x][y+1]=='M'){flag++;}return (char)('0'+flag);}
}

2.二维网格图中探测环

题目链接: 1559. 二维网格图中探测环 - 力扣(LeetCode)

附上大佬代码:

java">class Solution {public boolean containsCycle(char[][] grid) {m = grid.length;n = grid[0].length;visited = new boolean[m][n];for (int i = 0; i < m; ++i) for (int j = 0; j < n; ++j) if (!visited[i][j] && bfs(i, j, grid))return true;return false;}private boolean bfs(int i, int j, char[][] grid) {queue.offer(new int[]{i, j});visited[i][j] = true;while (!queue.isEmpty()) {int[] node = queue.poll();int neibors = 0, size = queue.size();for (int[] dir : dirs) {int row = node[0] + dir[0], col = node[1] + dir[1];if (isValid(row, col) && grid[row][col] == grid[node[0]][node[1]]) {++neibors;if (!visited[row][col]) {queue.offer(new int[]{row, col});visited[row][col] = true;}}}if (neibors - 1 > queue.size() - size)return true;}return false;}int m, n;boolean[][] visited;Queue<int[]> queue = new LinkedList<>();int[][] dirs = new int[][]{{-1, 0}, {1, 0}, {0, -1}, {0, 1}};private boolean isValid(int i, int j) {return i >=0 && j >= 0 && i < m && j < n;}
}

 后言

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


http://www.ppmy.cn/server/151994.html

相关文章

Windows 无法启动 Redis服务(位于本地计算机上)错误 1067

Windows 无法启动 Redis服务(位于本地计算机上)错误 1067 亲 你是不是报了这个错误 按照我的步骤123解决&#xff1a; 1.打开这个文件 2.里面找到 包含 logfile "Logs/redis_log.txt"这个的地方&#xff0c; 3.然后回到redis的安装包里新建一个文件夹叫Logs&#…

【CSS in Depth 2 精译_083】13.3:CSS 混合模式的用法及相关注意事项 + 13.4:本章小结

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 13.1.1 使用多个颜色节点&#xff08;上&#xff09;13.1.2 颜色插值方法&#xff08;中&#xff09;13.1.3 径向渐变…

PHPstudy中的数据库启动不了

法一 netstat -ano |findstr "3306" 查看占用该端口的进程号 taskkill /f /pid 6720 杀死进程 法二 sc delete mysql

RPC 服务与 gRPC 的入门案例

RPC 协议 RPC&#xff08;Remote Procedure Call Protocol&#xff09;即远程过程调用协议&#xff0c;它是一种通过网络从远程计算机程序上请求服务的协议&#xff0c;允许一个计算机程序可以像调用本地服务一样调用远程服务 。 RPC的主要作用是不同的服务间方法调用就像本地…

力扣-图论-14【算法学习day.64】

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

Vue2/3 生命周期详细对比与使用指南

Vue 2 生命周期 Vue 2 中,生命周期是指组件实例在创建、挂载、更新、销毁时所经历的一系列过程。以下是 Vue 2 的生命周期图和主要钩子函数的描述: Vue 2 生命周期钩子 beforeCreate:实例初始化之后调用,数据观测和事件配置尚未完成。常用于初始化逻辑。created:实例创建…

Mongodb 集群搭建

Mongodb 集群搭建 一、简介 mongodb 集群有三种方式&#xff1a;Master slave 主从模式、Replica Set 副本集模式、Sharding 分片集模式 Master slave 主从模式&#xff1a;主节点写入&#xff0c;数据同步到 Slave 节点&#xff0c;Slave 节点提供数据查询&#xff0c;最大…

音频声音太小怎么调大?调大音频声音的几种方法

音频声音太小怎么调大&#xff1f;音频声音过小可能由多种原因引起。从设备本身的硬件设置&#xff0c;到应用程序或播放软件的音量控制&#xff0c;再到文件本身的音频质量&#xff0c;都可能是导致声音过小的因素。尤其是在观看视频或听音乐时&#xff0c;若音量过低&#xf…