Leetcode 2290. Minimum number of obstacles needed to remove to reach a corner

topic

Insert image description here
Leetcode 2290. Minimum number of obstacles needed to remove to reach a corner

Code (9.17 first brush to see the analysis)

class Solution {
    
    
public:
    int dirs[4][2] = {
    
    {
    
    1, 0}, {
    
    -1, 0}, {
    
    0, 1}, {
    
    0, -1}};
    int minimumObstacles(vector<vector<int>>& grid) {
    
    
        int m = grid.size(), n = grid[0].size();
        vector<vector<int>> dis(m, vector<int>(n, INT_MAX));
        dis[0][0] = grid[0][0];
        deque<pair<int, int>> q;
        q.emplace_back(0, 0);
        while(!q.empty()) {
    
    
            auto [x, y] = q.front();
            q.pop_front();
            for(auto& [dx, dy] : dirs) {
    
    
                int nx = x + dx, ny = y + dy;
                if(nx >= 0 && nx < m && ny >= 0 && ny < n) {
    
    
                    if(dis[x][y] + grid[nx][ny] < dis[nx][ny]) {
    
    
                        dis[nx][ny] = dis[x][y] + grid[nx][ny];
                        grid[nx][ny] == 0 ? q.emplace_front(nx, ny) : q.emplace_back(nx, ny);
                    }
                }
            }
        }
        return dis[m-1][n-1];
    }
};

Guess you like

Origin blog.csdn.net/weixin_51322383/article/details/132938889