LeetCode 1102. 得分最高的路径(优先队列BFS/极大极小化 二分查找)
文章目錄
- 1. 題目
- 2. 解題
- 2.1 優(yōu)先隊(duì)列BFS
- 2.2 極大極小化 二分查找
1. 題目
給你一個(gè) R 行 C 列的整數(shù)矩陣 A。矩陣上的路徑從 [0,0] 開始,在 [R-1,C-1] 結(jié)束。
路徑沿四個(gè)基本方向(上、下、左、右)展開,從一個(gè)已訪問單元格移動(dòng)到任一相鄰的未訪問單元格。
路徑的得分是該路徑上的 最小 值。例如,路徑 8 → 4 → 5 → 9 的值為 4 。
找出所有路徑中得分 最高 的那條路徑,返回其 得分。
示例 1:
示例 2:
示例 3:
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/path-with-maximum-minimum-value
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
2.1 優(yōu)先隊(duì)列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;//值大的優(yōu)先} }; 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)
356 ms 28 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1102. 得分最高的路径(优先队列BFS/极大极小化 二分查找)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1259. 不相交的握
- 下一篇: LeetCode 1210. 穿过迷宫的