LeetCode 1102. 得分最高的路径(优先队列BFS/极大极小化 二分查找)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 优先队列BFS
      • 2.2 极大极小化 二分查找

1. 题目

给你一个 R 行 C 列的整数矩阵 A。矩阵上的路径从 [0,0] 开始,在 [R-1,C-1] 结束。

路径沿四个基本方向(上、下、左、右)展开,从一个已访问单元格移动到任一相邻的未访问单元格。

路径的得分是该路径上的 最小 值。例如,路径 8 → 4 → 5 → 9 的值为 4 。

找出所有路径中得分 最高 的那条路径,返回其 得分。

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

输入:[[5,4,5],[1,2,6],[7,4,6]]
输出:4
解释: 
得分最高的路径用黄色突出显示。 

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

输入:[[2,2,1,2,2,2],[1,2,2,2,1,2]]
输出:2

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

输入:[[3,4,6,3,4],[0,2,1,1,7],
[8,8,3,2,7],[3,2,4,9,8],
[4,1,2,0,0],[4,6,5,4,3]]
输出:3提示:
1 <= R, C <= 100
0 <= A[i][j] <= 10^9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/path-with-maximum-minimum-value
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 优先队列BFS

B站大佬讲解:LeetCode 1102. Path With Maximum Minimum Value

struct point
{int x;int y;int val;point(int x0, int y0, int v){x = x0;y = y0;val = v;}
};
struct cmp
{bool operator()(point& a, point& b) {return a.val < b.val;//值大的优先}
};
class Solution {vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};
public:int maximumMinimumPath(vector<vector<int>>& A) {int m = A.size(), n = A[0].size(), i, j, x, y, k, ans = A[0][0];vector<vector<bool>> visited(m, vector<bool>(n,false));visited[0][0] = true;priority_queue<point,vector<point>,cmp> q;q.push(point(0, 0, A[0][0]));while(!q.empty()){ans = min(ans, q.top().val);i = q.top().x;j = q.top().y;q.pop();if(i==m-1 && j==n-1)return ans;for(k = 0; k < 4; ++k){x = i + dir[k][0];y = j + dir[k][1];if(x>=0 && x<m && y>=0 && y<n && !visited[x][y]){q.push(point(x, y, A[x][y]));visited[x][y] = true;}}}return ans;}
};

1000 ms 25.8 MB

2.2 极大极小化 二分查找

LeetCode 1231. 分享巧克力(极小极大化 二分查找)
LeetCode 778. 水位上升的泳池中游泳(二分查找+dfs)

class Solution {vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};int m, n, ans;
public:int maximumMinimumPath(vector<vector<int>>& A) {m = A.size(), n = A[0].size();int l = 0, r = min(A[0][0], A[m-1][n-1]);while(l <= r){vector<vector<bool>> visited(m, vector<bool>(n,false));int midval = (l+r)/2;if(canfindpath(A,visited,0,0,midval))//能找到任意一条路径,其所有值都大于等于 midval{ans = midval;l = midval + 1;}elser = midval-1;}	return ans;}bool canfindpath(vector<vector<int>>& A, vector<vector<bool>>& visited, int i, int j, int v){int x, y, k;visited[i][j] = true;if(i==m-1 && j==n-1)return true;for(k = 0; k < 4; ++k){x = i + dir[k][0];y = j + dir[k][1];if(x>=0 && x<m && y>=0 && y<n && !visited[x][y] && A[x][y] >= v){if(canfindpath(A, visited,x,y,v))return true;}}return false;}
};

356 ms 28 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

计算机语音未来发展趋势,语音助手横评:发展现状|未来展望

●语音助手现状Siri带动了业内人工智能语音的发展&#xff0c;各大手机厂商都纷纷推出自家的语音助手&#xff0c;不过总体来说&#xff0c;我们心中所期望的那个无所不能的人工智能机器人还是暂时没有办法出现。首先从国内的情况来看&#xff0c;我们使用语音助手的场景也大部…

说说 JavaScript 计时器的工作原理

原文&#xff1a;John Resig http://ejohn.org/blog/how-javascript-timers-work/ How JavaScript Timers Work 从基础的层面来讲&#xff0c;理解JavaScript的定时器是如何工作的是非常重要的。计时器的执行常常和我们的直观想象不同&#xff0c;那是因为JavaScript引擎是单…

LeetCode 1538. Guess the Majority in a Hidden Array

文章目录1. 题目2. 解题1. 题目 We have an integer array nums, where all the integers in nums are 0 or 1. You will not be given direct access to the array, instead, you will have an API ArrayReader which have the following functions: int query(int a, int b…

html5怎么跟安卓交互,html5怎么与android交互

满意答案Android中构建HTML5应用 使用WebView控件,与其他控件的使用方法相同在layout中使用一个标签,WebView不包括导航栏&#xff0c;地址栏等完整浏览器功能&#xff0c;只用于显示一个html. 在WebView中加载Web页面: (1)注意在manifest文件中加入访问互联网的权限&#xff1…

Attempt to write to a read-only database Sqlite

使用WCF做了一个中间层服务&#xff0c;准备把数据同步到Sqlite数据库中&#xff0c;在本地测试的时候没有问题&#xff0c;但放到服务器上却报出了 标题的错误。 StackOverFlow上说是数据库文件的权限问题&#xff0c;于是我把Users的写入权限分配给Users组&#xff0c;问题解…

LeetCode 1258. 近义词句子(哈希+并查集+排序+回溯)

文章目录1. 题目2. 解题1. 题目 给你一个近义词表 synonyms 和一个句子 text &#xff0c; synonyms 表中是一些近义词对 &#xff0c;你可以将句子 text 中每个单词用它的近义词来替换。 请你找出所有用近义词替换后的句子&#xff0c;按 字典序排序 后返回。 示例 1&#…

2022年计算机考研学校,2022计算机考研院校推荐

2022计算机考研院校推荐2022考研复习已经如火如荼的展开了&#xff0c;但是依然有很多同学没有确定好目标院校。计算机是许多考研学生青睐的考研专业&#xff0c;那么选择什么院校成为了关键。为了方便大家更好的择校&#xff0c;新东方在线考计算机研小编下面整理了计算机专业…

LeetCode 1066. 校园自行车分配 II(状态压缩DP)

文章目录1. 题目2. 解题2.1 回溯超时2.2 状态压缩DP1. 题目 在由 2D 网格表示的校园里有 n 位工人&#xff08;worker&#xff09;和 m 辆自行车&#xff08;bike&#xff09;&#xff0c;n < m。所有工人和自行车的位置都用网格上的 2D 坐标表示。 我们为每一位工人分配一…

Bootstrap(二)—格栅系统!

W(A*n)-i W是一个页面的总宽度&#xff0c;比如950px&#xff1b;而A代表一个版块的宽度&#xff0c;设置为apx&#xff1b;n就是分为几个版块&#xff1b;而i就是区块之间的间隔。 例如 950&#xff08;a*24&#xff09;-10 而a40px&#xff1b;改变A和i的值就会生成不同的布…

python中的面向对象:类与对象(重点!!!)

Python中重点与难点&#xff0c;必须熟练掌握&#xff01;&#xff01;&#xff01; 一、面向对象 1、面向对象概念 面向对象(Object Oriented,OO)是软件开发方法&#xff0c;是一种思想。面向对象的对象是指客观世界存在的事物。 我们之前编程所熟悉的思路叫做面向过程&am…

计算机设备报废流程图,报废流程图.ppt

报废流程图球拍現場報廢流程圖 輪二現場報廢流程圖 輪一、安全現場報廢流程圖 航醫報廢流程圖 討論后(現場掃真實報廢) 討論后(品保掃真實報廢) 球拍、輪二報廢後臺標記 1、mail_index 0:簽核完成 1:掃真實報廢完 2:送簽核鎖定 3:駁回狀態 4:發mial完鎖定 2、FLAG(航醫沒有用到…

LeetCode 625. 最小因式分解(贪心)

文章目录1. 题目2. 解题1. 题目 给定一个正整数 a&#xff0c;找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a。 如果不存在这样的结果或者结果不是 32 位有符号整数&#xff0c;返回 0。 样例 1 输入&#xff1a; 48 输出&#xff1a; 68样例 2 输入&#xff1a; 15…

python面向对象中的类

1. 类的构成 类(Class) 由3个部分构成&#xff1a; 类的名称:类名&#xff1b; 类的属性:一组数据&#xff1b; 类的方法:允许对进行操作的方法 (行为) 列如,——人类的设计: 人类的设计我们只关心三样东西&#xff1a; 事物名称(类名):人(Person) 属性:身高(height)、年龄…

有符号数和无符号数的区别

C语言允许我们定义有符号数和无符号数&#xff0c;例如一个字节的存储空间&#xff0c;我们可以定义成unsigned char,也可以定义成signedchar&#xff0c;但是你知道它们的区别吗&#xff1f;你知道它们是怎样被存储&#xff0c;又怎样被区分处理吗&#xff1f; 1.有符号数和无…

u盘无法显示在计算机,插进电脑就是不认 不显示盘符的U盘是闹哪样?

唉&#xff0c;本来今天想和大家聊聊Windows 10春季创意者更新有啥好玩的东西&#xff0c;外加有哪些大坑需要注意和避免&#xff0c;结果微软跳票了&#xff0c;以下就省略下千字的小编内心独白吧。每次大版本的Windows更新对懒人或者对电脑来说&#xff0c;是个绝佳清理电脑的…

LeetCode 582. 杀死进程(图的遍历)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 给 n 个进程&#xff0c;每个进程都有一个独一无二的 PID &#xff08;进程编号&#xff09;和它的 PPID &#xff08;父进程编号&#xff09;。 每一个进程只有一个父进程&#xff0c;但是每个进程可能会有一个或者多个孩子进程…

指向函数的指针 - C语言

欢迎访问我的新博客&#xff1a;http://www.milkcu.com/blog/ 原文地址&#xff1a;http://www.milkcu.com/blog/archives/1368947400.html 基本概念 在C语言中&#xff0c;函数本身不是变量&#xff0c;但可以定义指向函数的指针。这种类型的指针可以被赋值、存放在数组中、传…