当前位置: 首页 > news >正文

【LeetCode】每日一题 2023_11_9 逃离火灾(bfs 练习)

文章目录

  • 刷题前唠嗑
  • 题目:最长平衡子字符串
    • 题目描述
    • 代码与解题思路
    • 偷看大佬题解
  • 结语

刷题前唠嗑


LeetCode? 启动!!!

嗯?什么?今天是 hard?陷入沉思。。。先看看题吧

题目:最长平衡子字符串

题目链接:2258. 逃离火灾

题目描述


这题目可太长啦,不过题意还是挺好理解滴

代码与解题思路

type pair struct { x, y int }
var dir = []pair{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}func maximumMinutes(grid [][]int) int {m, n := len(grid), len(grid[0])// bfs 函数:取三个数, 到达安全屋/安全屋上边/安全屋左边bfs := func(q []pair) (int, int, int) {time := make([][]int, m)for i, _ := range time { // 给 time 数组赋值为 -1time[i] = make([]int, n)for j, _ := range time[i] {time[i][j] = -1 // 表示未访问该点}}for _, v := range q { // 设置起点time[v.x][v.y] = 0}for t := 1; len(q) > 0; t++ {tmp := qq = nilfor _, v := range tmp {for _, v2 := range dir {// x, y 设置偏移量, 然后控制边界, grid == 0 表示能走(不是墙), time < 0 也就是 == -1 表示未访问该节点if x, y := v.x+v2.x, v.y+v2.y; x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == 0 && time[x][y] < 0 { time[x][y] = tq = append(q, pair{x, y}) // 需要 bfs 的新坐标起点}}}}return time[m-1][n-1], time[m-1][n-2], time[m-2][n-1]}manToHouseTime, m1, m2 := bfs([]pair{{0, 0}})if manToHouseTime < 0 { // 人能否到安全屋return -1}firPos := []pair{}for i, row := range grid { // 收集火的位置for j, x := range row {if x == 1 {firPos = append(firPos, pair{i, j})}}}fireToHouseTime, f1, f2 := bfs(firPos)if fireToHouseTime < 0 { // 火能否到安全屋return 1_000_000_000}d := fireToHouseTime - manToHouseTime if d < 0 { // 火到安全屋的时间是否比人快return -1}// 如果人需要从上面或左边进入安全屋, 与火到这两个位置的时间进行比较if m1 != -1 && m1+d < f1 || m2 != -1 && m2+d < f2 { return d}return d-1
}

我就非常朴素的把题目翻译了一遍,算是模拟题意吧,具体是这样的:

首先需要分析的就是,火和人一起走向安全屋,如果火到安全屋的上面或者左边之后,人就进不了安全屋了,所以我们在进行 bfs 搜索最短路的时候需要返回 安全屋/安全屋上面/安全屋左边 这几个位置,考虑火把人进入安全屋的路径挡住的情况

  1. 首先 bfs 人,查看是否能进安全屋,如果不能就返回 -1
  2. 然后遍历地图,收集火的位置
  3. 然后 bfs 火,查看火能否进安全屋,如果不能就返回 1_000_000_000
  4. 然后判断火到安全屋的时间是否比人快,如果比人快就返回 -1
  5. 最后判断火是否会到安全屋的上方或左方对人进入安全屋造成影响,如果有影响就让人少等一分钟,提前进安全屋,如果没影响就正常返回前往安全屋的时间

按照这个思路一步步走,最后结果没什么问题

偷看大佬题解

emmm

二分查找,我去看了看,我尝试理解,理解失败。。。开摆,今天就到这里吧~

结语

今天的每日一题就当是练习 bfs 啦

相关文章:

【LeetCode】每日一题 2023_11_9 逃离火灾(bfs 练习)

文章目录 刷题前唠嗑题目&#xff1a;最长平衡子字符串题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode? 启动&#xff01;&#xff01;&#xff01; 嗯&#xff1f;什么&#xff1f;今天是 hard&#xff1f;陷入沉思。。。先看看题吧 题目&#xff1a;最长平…...

flink1.18.0 自适应调度器 资源弹性缩放 flink帮你决定并行度

jobmanager.scheduler Elastic Scaling | Apache Flink 配置文件修改并重启flink后,webui上会显示调整并行度的按钮,他可以自己调整,你也可以通过webUI手动调整: 点击 之后: 调整完成后:...

如何设计vue项目的权限管理?

权限管理的重要性及必要性 数据安全&#xff1a;权限管理可以确保只有具有相应权限的用户能够访问和操作特定的数据。这可以保护敏感数据不被未授权的用户访问&#xff0c;从而提高数据的安全性。功能控制&#xff1a;权限管理可以根据用户的角色和权限设置&#xff0c;控制用户…...

HBase学习笔记(2)—— API使用

对HBase中常用的API操作进行简单的介绍 对应HBase学习笔记&#xff08;1&#xff09;—— 知识点总结-CSDN博客中介绍的HBase Shell常用操作 更多用法请参考官网&#xff1a;Apache HBase ™ Reference Guide 依赖导入 <dependencies><dependency><groupId>o…...

C/C++轻量级并发TCP服务器框架Zinx-游戏服务器开发004:游戏核心消息处理 - 玩家类的实现

文章目录 0 代码仓库1 需求2 AOI设计2.1 AOI算法简介2.2 AOI数据结构及实现2.2.1 玩家2.2.2 网格对象2.2.3 游戏世界矩形2.2.4 获取周围玩家的实现2.2.5 代码测试 2.3 GameRole结合AOI创建玩家2.3.1 创建游戏世界全局对象-GameRole继承AOIWorld的Player2.3.2 把玩家到游戏世界的…...

Python Selenium元素定位方法详解

引言 在Web自动化测试中&#xff0c;元素定位是一项非常重要的技术。Python Selenium提供了各种元素定位方法&#xff0c;可以帮助我们定位页面上的元素并与之交互。本文将详细介绍Python Selenium中常用的元素定位方法&#xff0c;并提供实例代码。 1. ID定位 ID是元素在HT…...

分布式事务,你了解多少?(上)

本文主要是讲述分布式事务的理论及常用的技术方案&#xff0c;主要源自各类学习和工作总结&#xff0c;如有不妥之处&#xff0c;还望指正。分布式事务的其他基础请自行查阅资料。 一、分布式事务产生的原因 分布式事务的产生&#xff0c;源自互联网、电商等的发展&#xff0c…...

ClickHouse主键索引最佳实践

在本文中&#xff0c;我们将深入研究ClickHouse索引。我们将对此进行详细说明和讨论&#xff1a; ClickHouse的索引与传统的关系数据库有何不同ClickHouse是怎样构建和使用主键稀疏索引的ClickHouse索引的最佳实践 您可以选择在自己的机器上执行本文给出的所有Clickhouse SQL…...

Flink 基础 -- 应用开发(项目配置)

1、概述 本节中的指南将向您展示如何通过流行的构建工具(Maven, Gradle)配置项目&#xff0c;添加必要的依赖项(即连接器和格式&#xff0c;测试)&#xff0c;并涵盖一些高级配置主题。 每个Flink应用程序都依赖于一组Flink库。至少&#xff0c;应用程序依赖于Flink api&…...

空间曲面@常见曲面方程

文章目录 曲面的基本问题特殊曲面球面方程球的标准形方程一般形方程例 柱面柱面方程不同维度下同方程的图形常见柱面方程 旋转曲面旋转曲面的方程旋转情况分类以yOz上的曲线绕 z z z轴旋转为例 旋转曲面的方程常见旋转曲面方程 锥面其他曲面 曲面的基本问题 根据曲面(点的几何…...

unity 接收和发送Udp消息

因为需要用到unity和其他的程序交互&#xff0c;其他程序可以提供Udp消息&#xff0c;因此找了合适的相互连接方法。这里直接上代码。 工具类&#xff1a; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; u…...

机器学习股票大数据量化分析与预测系统 - python 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果UI界面设计web预测界面RSRS选股界面 3 软件架构4 工具介绍Flask框架MySQL数据库LSTM 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 机器学习股票大数据量化分析与预测系统 该项目较为新颖&am…...

架构描述语言(ADL)

1.架构描述语言&#xff08;ADL) 架构描述语言&#xff08;Architecture Description Language, ADL&#xff09;是一种为明确说明软件系统的概念架构和对这些概念架构建模提供功能的语言。 2.ADL基本构成要素 ADL即架构描述语言&#xff0c;其基本构成要素包括&#xff1a;…...

GZ038 物联网应用开发赛题第2套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第2套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评人员反映,不得扰乱赛场秩序; 3、遵守赛场纪律,尊重考评人员,…...

Go 接口:Go中最强大的魔法,接口应用模式或惯例介绍

Go 接口&#xff1a;Go中最强大的魔法,接口应用模式或惯例介绍 文章目录 Go 接口&#xff1a;Go中最强大的魔法,接口应用模式或惯例介绍一、前置原则二、一切皆组合2.1 一切皆组合2.2 垂直组合2.2.1 第一种&#xff1a;通过嵌入接口构建接口2.2.2 第二种&#xff1a;通过嵌入接…...

Vue3全局共享数据

目录 1&#xff0c;Vuex2&#xff0c;provide & inject2&#xff0c;global state4&#xff0c;Pinia5&#xff0c;对比 1&#xff0c;Vuex vue2 的官方状态管理器&#xff0c;vue3 也是可以用的&#xff0c;需要使用 4.x 版本。 相对于 vuex3.x&#xff0c;有两个重要变…...

openai自定义API操作 API 返回值说明

custom-自定义API操作 openai.custom 公共参数 名称类型必须描述keyString是调用key&#xff08;获取测试key&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheStrin…...

jsp基本表格和简单算法表格

基本表格&#xff1b; <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd…...

在线存储系统源码 网盘网站源码 云盘系统源码

Cloudreve云盘系统源码-支持本地储存和对象储存,界面美观 云盘系统安装教程 测试环境:PHP7.1 MYSQL5.6 Apache 上传源码到根目录 安装程序: 浏览器数据 http://localhost/CloudreveInstallerlocalhost更换成你的网址 安装完毕 记住系统默认的账号密码 温馨提示:如果默认…...

线性代数(六)| 二次型 标准型转换 正定二次型 正定矩阵

文章目录 1. 二次型化为标准型1.1 正交变换法1.2 配方法 2 . 正定二次型与正定矩阵 1. 二次型化为标准型 和第五章有什么样的联系 首先上一章我们说过对于对称矩阵&#xff0c;一定存在一个正交矩阵Q&#xff0c;使得$Q^{-1}AQB $ B为对角矩阵 那么这一章中&#xff0c;我们…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...