leetcode 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 。

代码

class Solution {class  edge{int x,x1,len;public edge(int x, int x1, int len) {this.x = x;this.x1 = x1;this.len = len;}}int[] fa;public void  init(){for(int i=0;i<fa.length;i++)fa[i]=i;}public int  find(int x){if(x!=fa[x])fa[x]=find(fa[x]);return fa[x];}public void   union(int x,int y){x=find(x);y=find(y);if(x==y) return;fa[x]=y;}public int minimumEffortPath(int[][] heights) {PriorityQueue<edge> priorityQueue=new PriorityQueue<>((o1, o2) -> o1.len-o2.len);int r=heights.length,c=heights[0].length;for(int i=0;i<r;i++)//将相邻的格子高度差作为边的权重for(int j=0;j<c;j++){int cur=i*c+j;if(i<r-1){priorityQueue.add(new edge(cur,cur+c, Math.abs(heights[i][j]-heights[i+1][j])));}if(j<c-1){priorityQueue.add(new edge(cur,cur+1, Math.abs(heights[i][j]-heights[i][j+1])));}}fa=new int[r*c];init();while (!priorityQueue.isEmpty())//不断的加入权重小的边,直到起点和终点连通{edge cur=priorityQueue.poll();union(cur.x,cur.x1);if(find(0)==find(r*c-1))return cur.len;}return 0;}
}

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

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

相关文章

netflix_Netflix的Polynote

netflixNetflix open source Polynote is a new notebook environment and was born out of the necessity to accelerate data science experimentation at Netflix.Netflix开源Polynote是一种新的笔记本环境&#xff0c;其诞生是出于加速Netflix数据科学实验的需要。 Over t…

Django-内置用户系统

Django自带的用户认证 我们在开发一个网站的时候&#xff0c;无可避免的需要设计实现网站的用户系统。此时我们需要实现包括 1.用户注册 2.用户登录 3.用户认证 4.注销 5.修改密码 Django作为一个完美主义者的终极框架&#xff0c;当然也会想到用户的这些痛点。它内置了强大的用…

React 与 可视化

一般会想到 canvas 和 svg ; svg更适合画图, 但由于cavans在移动端的良好兼容性, 使用的更广; 什么是svg, scalable vector graphics 全称 可缩放矢量图形, 是一种来描述二维矢量图形的xml语言 canvas 能做的 svg基本都可以做, 字体图标, icon, logo 也能作 在ie上也是从ie9开…

css 跳动的心_如何用纯CSS为您的情人打造一颗跳动的心

css 跳动的心Each year on February 14th, many people exchange cards, candies, gifts or flowers with their special “valentine”. The day of romance we call Valentine’s Day is named for a Christian martyr and dates back to the 5th century, but has origins i…

oracle怎么获取行,在oracle中如何实现SELECT TOP N取得前几行记录

在sql server中可以通过SELECT TOP N来取得想要结果的前几行的信息。但是在oracle中必须借助伪列rownum来完成一个查询语句在取得结果集后&#xff0c;伪列rownum就会从1开始&#xff0c;从上往下依次递增。rownum是对结果集的编序排列。例如下表&#xff1a;SQL> select id…

图片管理程序(Java)

图片管理程序 gitee完整代码下载 github完整代码下载 华南农业大学课程设计作品&#xff08;99分&#xff09; 问题描述 题目目的是编写一个能够对数字像片进行管理的应用程序。 程序能够显示的图片格式包括,.JPG、.JPEG、.GIF、.PNG、和.BMP。 图像文件尺寸,要求能够处理从…

气流与路易吉,阿戈,MLFlow,KubeFlow

任务编排工具和工作流程 (Task orchestration tools and workflows) Recently there’s been an explosion of new tools for orchestrating task- and data workflows (sometimes referred to as “MLOps”). The quantity of these tools can make it hard to choose which o…

移动WEB开发之JS内置touch事件[转]

iOS上的Safari也支持click 和mouseover等传统的交互事件&#xff0c;只是不推荐在iOS的浏览器应用上使用click和mouseover&#xff0c;因为这两个事件是为了支持鼠标点击而设计 出来的。Click事件在iOS上会有半秒左右的延迟&#xff0c;原因是iOS要highlight接收到click的eleme…

编写代码的软件用什么编写的_如何通过像编写代码一样克服对编写的恐惧

编写代码的软件用什么编写的by Chris Rowe通过克里斯罗 How often do you get the fear? What do I mean by fear? How about the knot I got in my stomach just before I plunged out of plane on a parachute jump? It’s more than the brain logically planning to av…

快速学习一个新的模块

1、模块名.__doc__查看函数简介&#xff0c;为了便于查看&#xff0c;采用print&#xff08;模块名.__doc__&#xff09;打印出来&#xff0c;这样的格式便于查看。 2、采用内置方法dir()查看模块的变量、函数、类等等&#xff1b;采用"模块名.__all__"查看模块中提供…

php 公钥格式转换,如何把OpenSSH公钥转换成OpenSSL格式

《如何把OpenSSH公钥转换成OpenSSL格式》要点&#xff1a;本文介绍了如何把OpenSSH公钥转换成OpenSSL格式&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。首先看看OpenSSL工具的简单使用方法,我们以rsa加密算法为例生成一个私钥&#xff1a;openssl genrsa -o…

模拟操作系统(Java)

gitee完整代码下载 github完整代码下载 一、 需求分析 模拟一个采用多道程序设计方法的单用户操作系统&#xff0c;该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。预计程序所能达到的功能&#xff1a; 进程管理模拟&#xff1a;实现操作系统进程管…

数据库面试复习_数据科学面试复习

数据库面试复习大面试前先刷新 (REFRESH BEFORE THE BIG INTERVIEW) 介绍 (Introduction) I crafted this study guide from multiple sources to make it as comprehensive as possible. This guide helped me prepare for both the technical and behavioral aspects of the …

hibernate缓存

&#xff08;转自&#xff1a;http://www.cnblogs.com/java-class/p/6108175.html&#xff09; 阅读目录 1. 为什么要用 Hibernate 缓存&#xff1f;2. 项目实战3. Hibernate 缓存原理回到顶部1. 为什么要用 Hibernate 缓存&#xff1f; Hibernate是一个持久层框架&#xff0c;…

oracle 连接greenplum,Oracle通过DBLINK访问GreenPlum

为多个数据库之间的整合和迁移做POC&#xff0c;尝试使用Oracle Gateway和Heterogeneous Service来中转访问&#xff0c;测试过好多次&#xff0c;最终发现只有在32位的Oracle当中才能成功配置。 配置环境如下&#xff1a; Windows 2003 32bit 或 Windows 2008 64bit Oracle10G…

如何使用React和Redux前端创建Rails项目

by Mark Hopson马克霍普森(Mark Hopson) 如何使用React和Redux前端(加上Typescript&#xff01;)创建Rails项目 (How to create a Rails project with a React and Redux front-end (plus Typescript!)) 在Rails项目中使用React和Redux设置单页Javascript App的完整指南。 (A …

分布与并行计算—用任务管理器画CPU正弦曲线(Java)

class drawSin implements Runnable{Overridepublic void run() {final double SPLIT 0.01;// 角度的分割final int COUNT (int) (2 / SPLIT);// 2PI分割的次数&#xff0c;也就是2/0.01个&#xff0c;正好是一周final double PI Math.PI;final int interval 100;// 时间间…

Rails文件上传file_field报错Encoding::UndefinedConversionError

服务器用的是ubuntu12 64bit&#xff0c;环境是ruby1.9.3rails3mysql&#xff0c;测试是在windows2003上。 上传一个【.gitconfig】文件&#xff0c;没有问题&#xff0c;上传【新浪微博数据挖掘.pdf】报错&#xff0c;上传【back.jpg】报错。 下面是两段信息&#xff0c;是从【…

好久不来这里写东西了.

我正准备离开学校去实现自己的目标,很清楚自己在学校的... ...做共享程序员,就不得不考虑些商业上的东西,自己要吃饭啊!我想我是该好好的处理一下这二者的关系. 转载于:https://www.cnblogs.com/wangxiang/archive/2007/01/01/609714.html

Asp.net mvc中使用配置Unity

第一步&#xff1a;添加unity.mvc 第二步&#xff1a;在添加之后会在app_start中生成UnityConfig.cs&#xff0c;UnityMvcActivator.cs 第三步&#xff1a;使用 第四步&#xff1a;效果展示 转载于:https://www.cnblogs.com/WJ--NET/p/7117839.html