【每日一题】1631. 最小体力消耗路径-2023.12.11

news2024/11/24 17:05:50

题目:

1631. 最小体力消耗路径

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

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

请你返回从左上角走到右下角的最小 体力消耗值 。

示例 1:

输入:heights = [[1,2,2],[3,8,2],[5,3,5]]
输出:2
解释:路径 [1,3,5,3,5] 连续格子的差值绝对值最大为 2 。
这条路径比路径 [1,2,2,2,5] 更优,因为另一条路径差值最大值为 3 。

示例 2:

输入:heights = [[1,2,3],[3,8,4],[5,3,5]]
输出:1
解释:路径 [1,2,3,4,5] 的相邻格子差值绝对值最大为 1 ,比路径 [1,3,5,3,5] 更优。

示例 3:

输入:heights = [[1,2,1,1,1],[1,2,1,2,1],[1,2,1,2,1],[1,2,1,2,1],[1,1,1,2,1]]
输出:0
解释:上图所示路径不需要消耗任何体力。

提示:

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

解答:

 

代码:

class Solution {
    int[][] dirs={{-1,0},{1,0},{0,-1},{0,1}};
    public int minimumEffortPath(int[][] heights) {
        int m=heights.length;
        int n=heights[0].length;
        int left=0,right=999999,ans=0;
        while(left<=right){
            int mid=(left+right)/2;
            Queue<int[]> queue=new LinkedList<int[]>();
            queue.offer(new int[]{0,0});
            boolean[] seen=new boolean[m*n];
            seen[0]=true;
            while(!queue.isEmpty()){
                int[] cell=queue.poll();
                int x=cell[0],y=cell[1];
                for(int i=0;i<4;i++){
                    int nx=x+dirs[i][0];
                    int ny=y+dirs[i][1];
                    if(nx>=0&&nx<m&&ny>=0&&ny<n&&!seen[nx*n+ny]&&Math.abs(heights[x][y]-heights[nx][ny])<=mid){
                        queue.offer(new int[]{nx,ny});
                        seen[nx*n+ny]=true;
                    }
                }
            }
            if(seen[m*n-1]){
                ans=mid;
                right=mid-1;
            }else{
                left=mid+1;
            }
        }
        return ans;
    }
}

结果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

太阳能光伏企业网站建设效果如何

光伏行业近些年发展也比较迅速&#xff0c;其服务/产品拓展度较高&#xff0c;对企业来说&#xff0c;合作商较少更需要多地域寻找目标客户及信息承载展示、拓展等&#xff0c;传统线下方式单一且不足&#xff0c;线上成为众商家经营的方向。 1、品牌宣传、信息呈现难 太阳能…

C/C++ 题目:给定字符串s1和s2,判断s1是否是s2的子序列

判断子序列一个字符串是否是另一个字符串的子序列 解释&#xff1a;字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符&#xff0c;不改变剩余字符相对位置形成的新字符串。 如&#xff0c;"ace"是"abcde"的一个子序…

git 关于分支、merge、commit提交

最近开始用git终端提交代码&#xff0c;梳理了一些知识点 一 关于分支 关于分支&#xff0c;git的分支分为本地分支远程分支两种分支&#xff0c;在上传代码时&#xff0c;我们要确保当前本地分支连接了一个远程分支。 我们可以通过下面代码查看当前的本地分支&#xff1a; g…

.NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(测试篇)

WebAppDbTest 项目测试 测试工具 ltt介绍安装使用方式1、Drill2、Hammer3、Nailgun 测试主机规格配置CRUD 性能测试对比1、ltt 工具测试1.1、AddSingle 单条数据添加1.2、AddBulk 批量数据&#xff08;1000&#xff09;条添加1.3、GetSingle 单条数据查询1.4、GetAll 多条&…

angular form 组件、双向绑定;反应式表单

1.使用双向绑定&#xff0c;以及angular的表单提交功能 app.moudle中引入 双向绑定 [(ngModel)]"text" ​​​​​​​ 效果 提交表单 2.反应式表单 在app.module.ts中引入在组件中引入&#xff0c;并放在一个变量里 在初始化时实列化这个module 定义规则 在html…

成都工业学院Web技术基础(WEB)实验五:CSS3动画制作

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考&#xff0c;前端变化比较大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一样 3、图片和文字仅为示例&#xff0c;需要自行替换 4、如果代码不满足你的要求&#xff0c;请寻求其他的…

【Python必做100题】之第四题(判断素数)

素数&#xff1a;约数只有1和本身的数叫素数 代码如下&#xff1a; a int(input("请随机输入一个数字&#xff1a;")) #键盘随机输入一个数字进行判断 flag False for i in range(2,a):if a % i 0: #在(2&#xff0c;a-1)之间但凡有一个可以整除就不是素数break…

java代码test

目录结构 对于使用ArrayList集合并使用Iterator遍历 package test2; import java.util.ArrayList; import java.util.Iterator;public class T8 {public static void main(String[] args) {// 创建ArrayList集合并添加元素ArrayList<String> arrayList new ArrayList&l…

在项目中,使用drawio创建一个共享协作看板

在项目中&#xff0c;使用drawio创建一个共享协作看板 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功…

Flask应用基础入门总结

【1】使用migrate方式进行数据库连接 使用migrate方式进行数据库连接需要在终端分别运行三行代码&#xff1a; #init&#xff08;运行一次即可&#xff09;&#xff08;此db为自己设置的连接数据库的对象,可以修改&#xff09; flask db init #&#xff08;将orm模型生成迁移…

Javaweb之附录的详细解析

05. 附录 5.1 更新依赖索引 有时候给idea配置完maven仓库信息后&#xff0c;在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中。这个时候我们就需要更新idea中maven的索引了&#xff0c;具体做法如下&#xff1a; 打开设置----搜索maven----R…

N皇后,回溯【java】

问题描述 八皇后问题是十九世纪著名的数学家高斯于1850年提出的。 问题是&#xff1a;在88的棋盘上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。可以把八皇后问题扩展到n皇后问题&#xff0c;即在nn的棋盘上摆…

JMeter提取器

JMeter三大提取器 一、正则表达式提取器二、XPath提取器三、JSON提取器四、JSON属性 一、正则表达式提取器 使用场景&#xff1a; 任意格式的响应数据都可以使用正则表达式提取器&#xff1b;操作步骤&#xff1a; 添加线程组-添加HTTP请求-添加后置处理器-添加正则表达式提取…

udp多播组播

import socket ,struct,time# 组播地址和端口号 MCAST_GRP 239.0.0.1 MCAST_PORT 8888 # 创建UDP socket对象 sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) # 绑定socket对象到本地端口号 # sock.bind((MCAST_GRP, MCAST_PORT)) …

textarea文本框回车enter的时候自动提交表单,根据内容自动高度

切图网近期一个bootstrap5仿chatgpt页面的项目遇到的&#xff0c;textarea文本框回车enter的时候自动提交表单&#xff0c;根据内容自动高度&#xff0c;代码如下&#xff0c;亲测可用。 <textarea placeholder"Message ChatGPT…" name"" rows"&q…

排序的简单理解(上)

1. 排序的概念及引用 1.1 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作&#xff08;按照我们的需求能够有序的将数据信息排列起来&#xff09;。 稳定性&#xff1a;假…

大数据讲课笔记1.3 Linux目录操作

文章目录 零、学习目标一、导入新课二、新课讲解&#xff08;一&#xff09;常用权限操作1、常用权限操作&#xff08;1&#xff09;chgrp命令&#xff08;2&#xff09;chown命令&#xff08;3&#xff09;chmod命令 2、权限操作实战任务1、创建文件&#xff0c;设置其用户组任…

docker Compose-网络设置

目录 一、概述 二、容器网络模型(了解) CNM主要有三部分组成 CNM驱动接口 Docker内置网络驱动 三、Docker Compose-网络设置二 一、概述 二、使用 links 三、自定义网络 四、配置默认网络 五、已存在的网络 一、概述 随着微服务的事件&#xff0c;应用的越来越多&a…

去除水中的悬浮固体、重金属和各种酸

每个球粒直径通常在2-5毫米范围内 的&#xff0c;可用于固定床吸附污染物。不过球粒尺寸可以根据客户的具体需求生产 TRAPPSORB尽管它与颗粒产品具有相同的化学成分&#xff0c;但由于其独特 的外表面和结构&#xff0c;它与其他基于MgO的材料根本不同&#xff0c; 它由独特的…

BigData之Google Hadoop中间件安装

前言 Hadoop / Zookeeper / Hbase 因资源有限 这三个都是安装在同一台Centos7.9的机器上 但通过配置 所以在逻辑上是distributed模式 1 Java安装 1.1 下载java11 tar/opt/java/jdk-11.0.5/ 1.2 环境配置修改 文件/etc/profile export JAVA_HOME/opt/java/jdk-11.0.5/ e…