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

ops/2024/12/21 11:44:20/

前言

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


习题

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/ops/143750.html

相关文章

[蓝桥杯 2019 国 B] 排列数

目录 前言 题解 思路 疑问 解答 前言 对于本篇文章是站在别人的基础之上来写的&#xff0c;对于这道题作为2019年国赛B组的最难的一题&#xff0c;他的难度肯定是不小的&#xff0c;这道题我再一开始接触的时候连思路都没有&#xff0c;也是看了两三遍别人发的题解&#x…

深入探索Flink的复杂事件处理CEP

深入探索Flink的复杂事件处理CEP 引言 在当今大数据时代&#xff0c;实时数据处理变得愈发关键。Apache Flink作为一款强大的流处理框架&#xff0c;其复杂事件处理&#xff08;CEP&#xff09;组件为我们从海量实时数据中提取有价值信息提供了有力支持。本文将详细介绍Flink…

【原生js案例】前端封装ajax请求及node连接 MySQL获取真实数据

上篇文章&#xff0c;我们封装了ajax方法来请求后端数据&#xff0c;这篇文章将介绍如何使用 Node.js 来连接 MySQL&#xff0c;并对数据库进行操作。 实现效果 代码实现 后端接口处理 const express require("express"); const connection require("../da…

思科CCNA认证都学什么考什么?

关注 工 仲 好&#xff1a;IT运维大本营CCNA考试要学的东西很多&#xff0c;你不要看它只是一个初级认证&#xff0c;但是它的专业内容知识是不少的&#xff0c;你想要学好也是需要下一番苦功的。 那么考CCNA需要学哪些东西呢&#xff1f;下面我们就来了解一下吧。 01、考CCN…

JS子页面调用父页面函数,监听刷新事件

目录 1.子页面调用父页面的函数 2.监听刷新事件 1.子页面调用父页面的函数 我们先来说说什么是子页面&#xff0c;在我这里子页面就是域名一样&#xff0c;然后使用iframe引入的页面就是我所说的子页面 我们可以通过这个方法来调用父页面的函数 window.parent 后面写上一…

Pytorch | 利用BIM/I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用BIM/I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集BIM介绍基本原理算法流程特点应用场景 BIM代码实现BIM算法实现攻击效果 代码汇总bim.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR1…

R-CNN算法详解及代码复现

算法背景 在目标检测领域的发展历程中,RCNN算法的出现标志着一个重要里程碑。在RCNN问世之前,研究人员已经探索了多种目标检测方法,为后续突破奠定了基础: 滑动窗口 :一种早期常用的技术,通过在图像上移动不同大小的窗口来检测潜在目标。 选择性搜索 :一种更先进的候选区…

docling:PDF解析

目录 环境部署部署问题 用法转换单个文档 解析效果 环境部署 下载 git clone https://gitclone.com/github.com/DS4SD/docling.git conda create -n docling python3.11 conda activate docling pip install docling安装模型 git clone https://www.modelscope.cn/AI-ModelS…