Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - C++ - 994. Rotting Oranges
題目:

解答:
class Solution {
public:
int orangesRotting(vector<vector<int>>& grid) {
int r = 0;
queue<pair<int, int>> q;
int row_size = grid.size();
int col_size = grid[0].size();
for (int i = 0; i < grid.size(); i++) {
for (int j = 0; j < grid[i].size(); j++) {
if (grid[i][j] == 2) {
q.emplace(i, j);
}
}
}
while (!q.empty()) {
int valid = 0;
int size = q.size();
int dir[] = { -1, 0, 1, 0, -1 };
for (int i= 0; i < size; i ++) {
auto pos = q.front();
q.pop();
for (int j = 0; j < 4; j++) {
int row = pos.first + dir[j];
int col = pos.second + dir[j + 1];
if ((row >= 0) &&
(row < row_size) &&
(col >= 0) &&
(col < col_size) &&
(grid[row][col] == 1))
{
valid = 1;
grid[row][col] = 2;
q.emplace(row, col);
}
}
}
r += valid;
}
for (int i = 0; i < grid.size(); i++) {
for (int j = 0; j < grid[i].size(); j++) {
if (grid[i][j] == 1) {
return -1;
}
}
}
return r;
}
};