当前位置:网站首页>2290. Minimum Obstacle Removal to Reach Corner
2290. Minimum Obstacle Removal to Reach Corner
2022-06-10 15:38:00 【soO_ 007】
subject :
You are given a 0-indexed 2D integer array grid of size m x n. Each cell has one of two values:
0represents an empty cell,1represents an obstacle that may be removed.
You can move up, down, left, or right from and to an empty cell.
Return the minimum number of obstacles to remove so you can move from the upper left corner (0, 0) to the lower right corner (m - 1, n - 1).
Example 1:

Input: grid = [[0,1,1],[1,1,0],[1,1,0]] Output: 2 Explanation: We can remove the obstacles at (0, 1) and (0, 2) to create a path from (0, 0) to (2, 2). It can be shown that we need to remove at least 2 obstacles, so we return 2. Note that there may be other ways to remove 2 obstacles to create a path.
Example 2:

Input: grid = [[0,1,0,0,0],[0,1,0,1,0],[0,0,0,1,0]] Output: 0 Explanation: We can move from (0, 0) to (2, 4) without removing any obstacles, so we return 0.
Constraints:
m == grid.lengthn == grid[i].length1 <= m, n <= 1052 <= m * n <= 105grid[i][j]is either0or1.grid[0][0] == grid[m - 1][n - 1] == 0
Ideas :
This question uses 0-1BFS, A grid with obvious obstacles cost by 1, Barrier free grid cost by 0, Quite obvious 0-1 了 . establish dist Table to record from 0 Point to {x, y} The shortest distance of a point dist[x][y], establish visited Table to record {x, y} Whether the point has been updated to the shortest distance . After is deque Double ended queue BFS, about 4 In all directions ,cost by 1 Next step , Put in deque Backend ,cost by 0 Next step , Put in deque The front end of the , This ensures that we start from deque Always take out the low consumption points first . Finally, just go back dist[m - 1][n - 1] that will do .
Code :
class Solution {
public:
int minimumObstacles(vector<vector<int>>& grid) {
int m = grid.size(), n = grid[0].size();
vector<vector<bool>> visited(m, vector<bool>(n, false));
vector<vector<int>> dist(m, vector<int>(n, INT_MAX));
dist[0][0] = 0;
deque<pair<int, int>> q;
vector<pair<int, int>> dirt = { {1, 0}, {-1, 0}, {0 , 1}, {0, -1} };
q.push_back({ 0, 0 });
while (q.size()) {
auto tmp = q.front();
q.pop_front();
int x = tmp.first, y = tmp.second;
if (visited[x][y]) {
continue;
}
visited[x][y] = true;
for (int i = 0; i < dirt.size(); i++) {
int nx = x + dirt[i].first;
int ny = y + dirt[i].second;
if (nx < 0 || nx >= m || ny < 0 || ny >= n) {
continue;
}
dist[nx][ny] = min(dist[nx][ny], dist[x][y] + grid[nx][ny]);
if (grid[nx][ny] == 1) {
q.push_back({ nx, ny });
} else {
q.push_front({ nx, ny });
}
}
}
return dist[m - 1][n - 1];
}
};
边栏推荐
- Common QR decomposition, SVD decomposition and other matrix decomposition methods of visual slam to solve full rank and deficient rank least squares problems (analysis and summary of the most complete
- Kubernetes 1.24: avoid conflicts when assigning IP addresses to services
- 数据库创建触发器的问题
- 从“初代播种”到“落地生花”,广和通在5G商用三年间做了什么?
- How to realize ERP extranet connection?
- 智能电网终极Buff | 广和通模组贯穿“发、输、变、配、用”全环节
- [reward publicity] [content co creation] issue 16 may Xu sublimation, create a good time! You can also win a gift package of up to 500 yuan if you sign a contract with Huawei cloud Xiaobian!
- 音视频处理三剑客之 AEC:回声产生原因及回声消除原理
- In what scenario can we not use the arrow function?
- 反“内卷”,消息称 360 企业安全云将上线“一键强制下班”功能,电脑自动关闭办公软件
猜你喜欢

在什么场景下,我们不能使用箭头函数?

2290. Minimum Obstacle Removal to Reach Corner

Digital management medium + low code, jnpf opens a new engine for enterprise digital transformation

Create a space of local value together. In 2022, China successfully held the "one hundred cities tour · Ningbo Station" for commercial distribution

The product design software figma cannot be used. What software with similar functions is available in China

VINS理論與代碼詳解4——初始化

TensorFlow实战Google深度学习框架第二版学习总结-TensorFlow入门

“绽放杯”5G应用奖项大满贯!广和通多个联合项目荣获通用产品专题赛一、二、三等奖

点击解锁广和通5G模组“关键词”

Several reasons and solutions of virtual machine Ping failure
随机推荐
Self recommendation - in depth understanding of the rust Standard Library Kernel
How does the wireless communication module help the intelligent UAV build the "Internet of things in the air"?
json. Load (s) and json dump(s)
Several reasons and solutions of virtual machine Ping failure
Applet warning: now you can provide attr `wx:key` for a `wx:for` to improve performance
docket命令
[high code file format API] Shanghai daoning provides you with the file format API set Aspose, which can create, convert and operate more than 100 file formats in just a few lines of code
ORB_ Slam2 visual inertial tight coupling positioning technology route and code explanation 2 - IMU initialization
Development of stm8s103f single chip microcomputer (1) lighting of LED lamp
A complete multi-user wechat public platform development source code, with free sharing of documents
2022 Nanjing International Smart site equipment exhibition
Li Kou daily question - day 18 -350 Intersection of two data Ⅱ
MITM(中间人攻击)
Overview of cann interface calling process
Tensorflow actual combat Google deep learning framework second edition learning summary tensorflow introduction
顺应医改,积极布局——集采背景下的高值医用耗材发展洞察2022
这几个垂直类小众导航网站,你绝对不会想错过
Create a space of local value together. In 2022, China successfully held the "one hundred cities tour · Ningbo Station" for commercial distribution
Vins theory and code explanation 0 -- theoretical basis in vernacular
Day10/11 recursion / backtracking