2023-12-11 LeetCode每日一题(最小体力消耗路径)

2023-12-11每日一题

一、题目编号

1631. 最小体力消耗路径

二、题目链接

点击跳转到题目位置

三、题目描述

你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格子 (0, 0) ,且你希望去最右下角的格子 (rows-1, columns-1) (注意下标从 0 开始编号)。你每次可以往 上,下,左,右 四个方向之一移动,你想要找到耗费 体力 最小的一条路径。

一条路径耗费的 体力值 是路径上相邻格子之间 高度差绝对值最大值 决定的。

请你返回从左上角走到右下角的最小 体力消耗值
示例 1:
在这里插入图片描述

示例 2:
在这里插入图片描述

示例 3:
在这里插入图片描述
提示:

  • rows == heights.length
  • columns == heights[i].length
  • 1 <= rows, columns <= 100
  • 1 <= heights[i][j] <= 106

四、解题代码

int dir[4][2] = {
    {-1, 0},
    {1, 0},
    {0, -1},
    {0, 1}
};
const int maxn = 101;

bool bfs(int height, vector<vector<int>>& heights, int m, int n){
    int hash[maxn * maxn + 100 + 6];
    memset(hash, 0, sizeof(hash));
    queue<int> path;
    path.push(0 * 100 + 0);
    hash[0 * 100 + 0] = 1;
    while(!path.empty()){
        int tmp = path.front();
        path.pop();
        int x = tmp / maxn;
        int y = tmp % maxn;
        if(x == m - 1 && y == n - 1){
            return true;
        }
        for(int i = 0; i < 4; ++i){
            int tx = x + dir[i][0];
            int ty = y + dir[i][1];
            if(tx >= m || ty >= n || tx < 0 || ty < 0){
                continue;
            }
            if(hash[tx * maxn + ty] == 0 && abs(heights[tx][ty] - heights[x][y]) <= height){
                hash[tx * maxn + ty]=1;
                path.push(tx * maxn + ty);
            }
        }
    }
return false;
}

class Solution {
public:
    int minimumEffortPath(vector<vector<int>>& heights) {
        int left = 0, right = 999999;
        int ans = 0;
        int m = heights.size();
        int n = heights[0].size();
        while(left <= right){
            int mid = (left+right) >> 1;
            if(bfs(mid, heights, m, n) == true){
                ans = mid;
                right = mid-1;
            }
            else{
                left = mid + 1;
            }
        }
    return left;
    }
};

五、解题思路

(1) 利用图的四方向遍历。

(2) 二分答案来求解。

(3) 广度优先搜索来判断答案可不可行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免费部署私人 ChatGPT的项目:LobeChat 14K+

前言 随着ChatGPT的快速风靡&#xff0c;所有人都对AI高度关注&#xff0c;那么你想不想部署一个属于自己的私人ChatGPT&#xff0c;用更美观&#xff0c;更高效&#xff0c;更好玩的方式来体验AI呢&#xff1f; 今天我们推荐的就是可以帮你实现在本地部署私人ChatGPT&#x…

深度学习框架解读—Yolov5/Yolov7/Halcon对比分析

作为一名机器视觉深度学习算法工程师&#xff0c;我从技术实现、性能、适用场景和易用性等方面来评价YOLOv5、YOLOv7和Halcon中的深度学习框架。以YOLOv5和YOLOv7进行比较&#xff0c;并结合Halcon的深度学习功能进行综合评价。 Yolov5 优点&#xff1a; 1. 速度快&#xff1a…

Consul

简介 Consul是一套开源的分布式服务发现和配置管理系统&#xff0c;由HashiCorp 公司用Go语言开发。 提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用&#xff0c;也可以一起使用以构建全方位的服务网格&#xff0c;总之…

Tomcat Notes: Deployment File

This is a personal study notes of Apache Tomcat. Below are main reference material. - YouTube Apache Tomcat Full Tutorial&#xff0c;owed by Alpha Brains Courses. https://www.youtube.com/watch?vrElJIPRw5iM&t801s 1、Tomcat deployment1.1、Two modes of …

Python 热力图的绘制(Matplotlib篇-12)

Python 热力图的绘制(Matplotlib篇-12)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

NLP论文阅读记录 - 2021 | SimCLS:抽象概括对比学习的简单框架

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1优势 三.本文方法——抽象概括的对比学习框架3.1 第一阶段&#xff1a;候选生成3.2 第二阶段&#xff1a;无参考评估3.3对比训练 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4…

工作中redis相关知识总结

这里写目录标题 一、Redis数据持久化概念二、redis数据类型三、redis缓存的应用流程四、什么样的数据适合存放到redis中&#xff1f;1、什么情况下&#xff0c;redis中会没有数据&#xff1f;2、redis缓存项目在测试中的注意事项a、更新缓存b、淘汰缓存 五、什么是缓存击穿1、缓…

AUTOSAR中 CAN总线数据通过COM模块收发流程

目录 AUTOSAR中CAN总线数据通过COM模块收发流程1、AUTOSAR中 CAN总线数据通过COM模块发送流程2、AUTOSAR中 CAN总线数据通过COM模块接收流程 AUTOSAR中CAN总线数据通过COM模块收发流程 printf("欢迎关注公众号&#xff1a;车载嵌入式探索者&#xff0c;博主建立了一个车规…

Spark---RDD介绍

文章目录 1.Spark核心编程2.RDD介绍2.1.RDD基本原理2.2 RDD特点1.弹性2.分布式 &#xff1a;数据存储在大数据集群的不同节点上3.数据集 &#xff1a;RDD封装了计算逻辑&#xff0c;并不保存数据4.数据抽象 &#xff1a;RDD是一个抽象类&#xff0c;具体实现由子类来实现5. 不可…

泄放电路与LDO扩流电路

直接用并联电阻的方式进行能量泄放&#xff0c;这种方式简单直接但是电阻会损耗掉一定能量&#xff1a; 安规电容旁边的电阻&#xff1a; 2.三极管泄放电路&#xff1a;针对于大功率场景电阻不便于直接使用的时候&#xff0c;主要目的是电源断开时泄放大电容C1的能量。利用了三…

GO语言笔记1-安装与hello world

SDK开发工具包下载 Go语言官网地址&#xff1a;golang.org&#xff0c;无法访问Golang中文社区&#xff1a;首页 - Go语言中文网 - Golang中文社区下载地址&#xff1a;Go下载 - Go语言中文网 - Golang中文社区 尽量去下载稳定版本&#xff0c;根据使用系统下载压缩包格式的安装…

NSSCTF sql

开启环境: ?wllm1 回显正常,试试?wllm1 出现报错;加上%23正常 ?wllm-1or 11%23出现过滤 测试,空格用**替代, 等号用like替代 测试长度 ?wlmm1order/**/by/**/3%23正常 ?wlmm1order/**/by/**/4%23报错 长度为3,测试回显位置: ?wlmm-1union/**/select/**/1,2,3%23 …

test ui-03-cypress 入门介绍

cypress 是什么&#xff1f; 简而言之&#xff0c;Cypress 是一款专为现代Web构建的下一代前端测试工具。我们解决了开发人员和质量保证工程师在测试现代应用程序时面临的关键问题。 我们使以下操作成为可能&#xff1a; 设置测试编写测试运行测试调试测试 Cypress经常与Se…

案例087:基于微信小程序的社区养老服务平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Allins 官网正式上线,铭文赛道进入 AMM 交易时代

“Allins正在通过全新的AMM方案为BRC20及多链铭文资产拓展DeFi场景&#xff0c;官网的全新上线意味着铭文资产的交易正式进入AMM时代。” 在2023年1月开始&#xff0c;Ordinals协议的推出成为了铭文赛道发展的开端&#xff0c;并为比特币这类非图灵完备的生态&#xff0c;带来了…

运用Jmeter进行登录测试

开始了解Jmeter,写篇关于Jmeter的博客做备忘,这里以苏宁易购网站的登录请求为例实战来说明测试计划元件,创建一个 Web 测试计划。 今天简单介绍Jemeter的入门,Jmeter 的安装这边就跳过,直接讲述如何使用JMETER,如何运用Jmeter进行测试。 a.下载jmeter软件 b.安装…

BLE Mesh蓝牙组网技术详细解析之Access Layer访问层(六)

目录 一、什么是BLE Mesh Access Layer访问层&#xff1f; 二、Access payload 2.1 Opcode 三、Access layer behavior 3.1 Access layer发送消息的流程 3.2 Access layer接收消息的流程 3.3 Unacknowledged and acknowledged messages 3.3.1 Unacknowledged message …

HTTP 错误 401.3 - Unauthorized 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置。

用IIS 发布网站&#xff0c;不能访问且出现错误&#xff1a; HTTP 错误 401.3 - Unauthorized 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置。您无权查看此目录或页面 解决办法&#xff1a; 1.打开IIS界面&#xff0c;选中发布的网站&#xff0c;右键—>编辑…

java代码规范(适合写程序之前先了解有助于开发协同)

目录 一、类定义 二、方法定义 三、接口定义 四、变量定义 1、命名规范&#xff1a; 2、类型规范&#xff1a; 3、常量规范&#xff1a; 五、static关键字 1、静态变量&#xff08;类变量&#xff09;&#xff1a; 2、静态方法&#xff08;类方法&#xff09;&#x…

YOLOv5算法进阶改进(11)— 添加EMA注意力机制 | 基于跨空间学习的高效多尺度注意力模块

前言:Hello大家好,我是小哥谈。EMA(Exponential Moving Average)注意力机制是一种用于增强模型性能的注意力机制,它通过对模型的特征图进行加权平均来提取更有用的特征信息。具体来说,EMA注意力机制通过引入一个权重因子来调整特征图中每个位置的重要性,从而使模型能够更…