ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

1102. 得分最高的路径 C++ 优先队列

2021-01-02 13:30:34  阅读:295  来源: 互联网

标签:pq 队列 C++ Cell int 1102 visited col row


leetCode:https://leetcode-cn.com/problems/path-with-maximum-minimum-value/

class Cell{
public:
    Cell(int row, int col,int value) : r(row), c(col), val(value)  {}
    bool operator < (const Cell& cell) const {
        return this->val < cell.val;
    }

public:
    int val;
    int r;
    int c;
};
bool last_reach(int i, int j, int r, int c)
{
    return ((i == r - 1) && (j == c - 1)) ? true : false;
}
class Solution {
public:
    int maximumMinimumPath(vector<vector<int>>& A) {
        int row = A.size();
        int col = A[0].size();
        int min = std::min(A[row -1][col - 1], A[0][0]);
        std::priority_queue<Cell> pq;
        vector<vector<int>> visited(row, vector<int>(col, false));
        int i = 0, j = 0;
        visited[0][0] = true;
        pq.push(Cell(0, 0, A[0][0]));
        while (i != row - 1 || j != col -1) {
            visited[i][j] = true;
            if (i - 1 >= 0 && visited[i - 1][j] == 0) {
                visited[i -1][j] = 1;
                pq.push(Cell(i -1, j, A[i -1][j]));
            }
            if (i + 1 < row && visited[i + 1][j] == 0) {
                if (last_reach(i + 1, j, row, col)) return min;
                visited[i + 1][j] = 1;
                pq.push(Cell(i + 1, j, A[i + 1][j]));
            }
            if (j -1 >= 0 && visited[i][j - 1] == 0) {
                visited[i][j -1] = 1;
                pq.push(Cell(i, j - 1, A[i][j - 1]));
            }
            if (j + 1 < col && visited[i][j + 1] == 0) {
                if (last_reach(i , j + 1, row, col)) return min;
                visited[i][j + 1] = 1;
                pq.push(Cell(i, j + 1, A[i][j + 1]));
            }
            Cell nextCell = pq.top();
            if (nextCell.val < min) min = nextCell.val;
            i = nextCell.r;
            j = nextCell.c;
            pq.pop();
        }
        return min;
    }
};



标签:pq,队列,C++,Cell,int,1102,visited,col,row
来源: https://blog.csdn.net/u013395337/article/details/112095312

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有