深度优先搜索|1034, 1020, 1254
深度优先搜索|1034. 边界着色, 机器人的运动范围,529. 扫雷游戏
- 边界着色
- 机器人的运动范围
- 扫雷问题
边界着色
把这个题分段了,先找到包括 (row, col) 的连通分量,然后再去找符合条件的边界,找到以后涂上颜色就行。
class Solution:def colorBorder(self, grid: List[List[int]], row: int, col: int, color: int) -> List[List[int]]:m = len(grid)n = len(grid[0])def dfs(i,j):#print(i,j)con[i][j] = Truefor k1,k2 in [[i+1,j],[i-1,j],[i,j+1],[i,j-1]]:if (0 <= k1 < m and 0 <= k2 < n) and grid[k1][k2] == grid[i][j] and not con[k1][k2]:dfs(k1,k2)def diff(i,j):for k1,k2 in [[i+1,j],[i-1,j],[i,j+1],[i,j-1]]:if (0 <= k1 < m and 0 <= k2 < n) and grid[k1][k2] != grid[i][j]:return Truereturn Falsecon = [[False]*n for _ in range(m)]dfs(row,col)for i in range(m):for j in range(n):if not con[i][j]: continue if i == 0 or i == m-1 or j == 0 or j == n-1: continueif not diff(i,j): con[i][j] = Falsefor i in range(m):for j in range(n):if con[i][j]: grid[i][j] = colorreturn grid
机器人的运动范围
这个类型的题也算比较熟悉了,也是看能走到哪一步,不能走的地方拦一下。
class Solution:def movingCount(self, m: int, n: int, k: int) -> int:def num_sum(i,j):a = str(i)+str(j)s = 0for i in a:s += int(i)return sres = 0used = [[False]*n for _ in range(m)]def dfs(i,j,k):nonlocal resres += 1used[i][j] = Truefor k1,k2 in [[i+1,j],[i-1,j],[i,j+1],[i,j-1]]:if (0 <= k1 < m and 0 <= k2 < n) and num_sum(k1,k2) <= k and not used[k1][k2]:dfs(k1,k2,k)dfs(0,0,k)return res
扫雷问题
这个题逻辑上没有什么问题,但有两个问题要注意:
- 第一点是如果初始点不是炸弹的话,其实不会踩上去的,所以这个结局应该是翻到没有可以翻了就结束,所以下面的判断是写在dfs外面的不是里面
if board[click[0]][click[1]] == 'M':board[click[0]][click[1]] = 'X'return board
class Solution:def updateBoard(self, board: List[List[str]], click: List[int]) -> List[List[str]]:direc = [[1,0],[-1,0],[0,1],[0,-1],[1,1],[-1,1],[-1,-1],[1,-1]]m = len(board)n = len(board[0])if board[click[0]][click[1]] == 'M':board[click[0]][click[1]] = 'X'return boarddef empty(i,j):boom = 0for k1,k2 in direc:x = i+k1y = j+k2if (0<=x<m and 0<=y<n) and board[x][y] == 'M':boom += 1return boomdef dfs(i,j): num_b = empty(i,j)if not num_b:board[i][j] = 'B'for k1,k2 in direc:x = i+k1y = j+k2if 0<=x<m and 0<=y<n and board[x][y]=='E':dfs(x,y)else:board[i][j] = str(num_b)dfs(click[0],click[1])return board
- 一开始一直内存不够,本来以为是方向的问题,后来发现是没有剪枝。在进入递归之前是需要判断是不是等于’E’的,因为之前走过的’E’已经’B’了,所以如果不说明的话会反复横跳,然后超出范围。
if 0<=k1<m and 0<=k2<n and board[k1][k2]=='E':dfs(k1,k2)
class Solution:def updateBoard(self, board: List[List[str]], click: List[int]) -> List[List[str]]:#direc = [[1,0],[-1,0],[0,1],[0,-1],[1,1],[-1,1],[-1,-1],[1,-1]]m = len(board)n = len(board[0])def empty(i,j):boom = 0for k1,k2 in [[i+1,j],[i-1,j],[i,j+1],[i,j-1],[i+1,j+1],[i-1,j+1],[i-1,j-1],[i+1,j-1]]:if (0<=k1<m and 0<=k2<n) and board[k1][k2] == 'M':boom += 1return boomdef dfs(i,j): if board[click[0]][click[1]] == 'M':board[click[0]][click[1]] = 'X'returnnum_b = empty(i,j)if not num_b:board[i][j] = 'B'for k1,k2 in [[i+1,j],[i-1,j],[i,j+1],[i,j-1],[i+1,j+1],[i-1,j+1],[i-1,j-1],[i+1,j-1]]:if 0<=k1<m and 0<=k2<n and board[k1][k2]=='E':dfs(k1,k2)else:board[i][j] = str(num_b)dfs(click[0],click[1])return board
相关文章:
深度优先搜索|1034, 1020, 1254
深度优先搜索|1034. 边界着色, 机器人的运动范围,529. 扫雷游戏 边界着色机器人的运动范围扫雷问题 边界着色 把这个题分段了,先找到包括 (row, col) 的连通分量,然后再去找符合条件的边界,找到以后涂上颜色就行。 c…...
都市信息供求网servlet+jsp新闻广告出售java源代码mysql
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 都市信息供求网servletjsp 系统1权限:管理…...
kubeadm init:failed to pull image registry.k8s.io/pause:3.6
错误信息: Unfortunately, an error has occurred: timed out waiting for the condition This error is likely caused by: - The kubelet is not running - The kubelet is unhealthy due to a misconfiguration of the node in some way…...
设计模式之简单工厂模式、工厂模式、抽象工厂模式
参考: 设计模式笔记 简单工厂模式 ● 将类的创建过程交给工厂类实现,如果需要一个类对象,则直接通过工厂创建一个类。 ● 简单工厂模式不符合开闭原则 ● 适用场景:工厂类负责创建的对象比较少;客户端只知道传入工厂…...
C# 控制台彩色深度打印 工具类
文章目录 前言Nuget 环境安装代码使用打印结果 总结 前言 有时候我们想要靠打印获得程序信息,因为Dubeg模式需要一点一点断点进入进出,但是我们觉得断点运行实在是太慢了,还是直接打印后找结果会好一点。 Nuget 环境安装 想自己写的话可以看…...
Pytorch Tensor维度变换方法
1.torch.reshape()、torch.view()可以调整Tensor的shape 2.torch.unsqueeze(index)可以为Tensor增加一个维度 3.squeeze()可以删减维度 4.expand()扩展维度 5.repeat()维度重复,不常用 6.transpose(dim1, dim2)交换dim1与dim2࿰…...
微信小程序之点击文字文字自动转语音进行播放,微信小程序文字识别转语音播放
需求 一堆题目,题干需要在点击的时候进行语音朗读,不做音频上传,不然不便于维护 解决方案 点击查看微信官方文档:微信同声传译 使用流程 后台配置 mp.weixin.qq.com 设置 > 第三方设置 > 插件管理 小程序插件使用流…...
主动学习、半监督学习、它们之间的区别?
1、主动学习(Active Learning): 含义: 有的时候,有类标的数据比较稀少而没有类标的数据是相当丰富的,但是对数据进行人工标注又非常昂贵,这时候,学习算法可以主动地提出一些标注请…...
linux快速安装Rabbitmq
linux快速安装Rabbitmq 准备yum仓库 # root执行rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.ascrpm --import https://packagecloud.io/rabbitmq/erlang/gpgkeyrpm --import https://packagecloud.io/ra…...
spconv1.2.1库的编译与安装
SpConv是一个稀疏卷积库,在点云相关的深度学习算法中用的比较多。由于目前官方升级到了2.0,然而有些算法(比如审稿人要我复现的Cylinder3D)仍需要用到1.2.1版本,因此本人花了亿点点时间折腾了一下。。。 本机安装cuda…...
java+springboot+mysql企业邮件管理系统
项目介绍: 使用javaspringbootmysql开发的企业邮件管理系统,系统包含超级管理员、管理员、员工角色,功能如下: 超级管理员:管理员管理;员工管理;反馈管理;系统公告;个人…...
[CKA]考试之一个 Pod 封装多个容器
由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 创建一个Pod,名字为kucc1,这个Pod包含4容器ÿ…...
iphone备份用什么软件?好用的苹果数据备份工具推荐!
众所周知,如果要将iPhone的数据跟电脑进行传输备份的话,我们需要用到iTunes这个pc工具。但是对于iTunes,不少人都反映这个软件比较难用,用不习惯。于是,顺应时代命运的iPhone备份同步工具就出现了。那iphone备份用什么…...
一语道破 python 迭代器和生成器
简而言之:迭代器是一个抽象化的概念,在python中表示访问数据集合中元素的一种方式;生成器也是一个抽象化的概念,在python 中,边循环边生成所需数据,是一种时间换空间的方法。从访问数据方式上来看ÿ…...
有哪些开源和非开源的项目管理工具?
开源和非开源项目管理工具各有其特点和优势。下面是一些常见的开源和非开源项目管理工具以及它们的简要介绍。 开源项目管理工具: OpenProject:OpenProject 是一个功能强大、易于使用的开源项目管理工具。它提供了项目计划、任务管理、团队协作、文档管…...
实战 01|「编写互动式界面」
前言 实践是最好的学习方式,技术也如此。 文章目录 前言一、功能需求(一)1、功能需求描述2、知识点3、布局与程序设计 二、功能需求(二)1、功能需求描述2、知识点1)LinearLayout2)RelativeLayou…...
开源社区寻找八月创作之星!你准备好了吗~
活动页面:https://openlab.cosmoplat.com/createStarCampaign-202308卡奥斯开源社区定位打造工业互联网行业顶级开源社区生态平台,为开发者、企业等用户提供代码托管、技术交流/共享、硬件认证/接入、培训认证、大赛活动等服务,目…...
appuploader不是开发者账号
Appuploader是一款可以帮助开发者上传iOS应用到Apple App Store的工具。很多开发者都知道,在上传应用到App Store之前,需要创建开发者账号并获得苹果官方的认证才能进行上传。但是,有些开发者可能并不想去注册开发者账号,或者遇到…...
MySQL - 10、其他命令
描述表结构、使用数据库、设置变量、更改分隔符、导入SQL脚本、退出MySQL的操作: -- 描述表结构 DESCRIBE table_name;-- 使用特定数据库 USE database_name;-- 设置变量 SET variable_name value;-- 更改分隔符 DELIMITER //-- 执行SQL脚本文件 SOURCE /path/to/…...
输入框长度在XSS测试中如何绕过字符长度限制
大家好,这是我编写的第一篇文章,之所以会分享这个故事,是因为我花了几个晚上的时间,终于找到了解决某个问题的方法。故事如下: 几个月前,我被邀请参加一个非公共的漏洞悬赏项目,在初期发现了一些…...
大模型学习路线:小白也能轻松入门,收藏这份进阶指南!
大模型技术学习包含理论、实践和应用三个层面。理论方面需掌握数学、机器学习、自然语言处理等基础;实践方面需熟悉Python、深度学习框架,并从模型实现到大规模训练进行实战;应用方面则需探索大模型在各领域的应用场景。持续学习是关键&#…...
RWKV7-1.5B-G1A模型推理服务监控与告警体系搭建
RWKV7-1.5B-G1A模型推理服务监控与告警体系搭建 1. 为什么模型服务需要监控体系 在AI模型服务投入生产环境后,最让人头疼的问题往往不是模型效果,而是服务稳定性。想象一下,半夜三点突然接到报警电话,说线上推理服务挂了&#x…...
别再为Carla找模型发愁了!手把手教你用Blender 3.0+UE4插件自制专属车辆(附完整FBX导出避坑指南)
从零打造Carla仿真专属车辆:Blender 3.0与UE4插件全流程实战 在自动驾驶仿真领域,Carla凭借其开源特性和逼真的物理引擎已成为行业标杆工具。但许多开发者都会遇到一个共同困境:官方提供的车辆模型库无法满足特定需求,无论是特种工…...
QMCDecode:打破音乐格式壁垒的解密技术实现
QMCDecode:打破音乐格式壁垒的解密技术实现 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果存储…...
终极指南:5步让老款Mac安装最新macOS系统
终极指南:5步让老款Mac安装最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 想让2008年甚至更早的MacBook也能运行最新的macOS Sequo…...
知识的基本特性:相对正确性、不确定性与可表示性
“知识”并不是对客观世界的简单照搬,也不是永远不变的绝对真理。它是在认识、概括、组织和应用过程中形成的结果,因此既具有稳定性,也具有条件性。理解知识的基本特性,有助于进一步理解:为什么知识需要表示࿰…...
【C# .NET 11 AI推理加速权威指南】:5大零拷贝内存优化+3层GPU绑定策略,实测吞吐提升4.7倍(含微软内部验证数据)
第一章:C# .NET 11 AI推理加速安全性最佳方案总览.NET 11 引入了原生 AI 推理加速支持与深度安全增强机制,为 C# 开发者构建高性能、可验证、低延迟的 AI 应用提供了统一平台。其核心围绕 ONNX Runtime 集成优化、硬件加速抽象层(HAL…...
Android OAID 集成实战:基于 MSA SDK 1.0.25 的避坑指南与多厂商适配
1. 为什么需要OAID?从IMEI到匿名标识的演进之路 几年前我做广告归因项目时,突然发现获取不到设备的IMEI了。当时第一反应是代码出了问题,反复检查权限声明和API调用,直到看到系统日志里醒目的"READ_PHONE_STATE permission …...
终极OpenVINO Notebooks推理优化指南:从入门到部署的完整教程
终极OpenVINO Notebooks推理优化指南:从入门到部署的完整教程 【免费下载链接】openvino_notebooks 📚 Jupyter notebook tutorials for OpenVINO™ 项目地址: https://gitcode.com/GitHub_Trending/op/openvino_notebooks OpenVINO Notebooks是一…...
openclaw模型尝试申请免费试用。
这个免费试用能试用到什么时候,有没有限量限速限时,我统统不知道。但是这是我这只小白,最近一段时间(两周),唯一尝试成功的方案。尝试NVIDIA NIM API https://build.nvidia.com/接受.不知道为啥没好用。而且…...
