994. 腐烂的橘子

2023-12-18 08:28:59

在给定的?m x n?网格?grid?中,每个单元格可以有以下三个值之一:

  • 值?0?代表空单元格;
  • 值?1?代表新鲜橘子;
  • 值?2?代表腐烂的橘子。

每分钟,腐烂的橘子?周围?4 个方向上相邻?的新鲜橘子都会腐烂。

返回?直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回?-1?。

示例 1:

输入:grid = [[2,1,1],[1,1,0],[0,1,1]]
输出:4

示例 2:

输入:grid = [[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正向上。

示例 3:

输入:grid = [[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 10
  • grid[i][j]?仅为?01?或?2

?

?int orangesRotting(vector<vector<int>>& grid) {

? ? ? ? int row=grid.size();

? ? ? ? int col = grid[0].size();

? ? ? ? vector<vector<bool>>visited(row,vector<bool>(col,false));

? ? ? ? queue<pair<int,int>>que;

? ? ? ? int ret=0;

? ? ? ? for(int i=0;i<row;i++)

? ? ? ? {

? ? ? ? ? ? for(int j=0;j<col;j++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if(grid[i][j]==2)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? que.push(pair<int,int>(i,j));

? ? ? ? ? ? ? ? ? ? visited[i][j]=true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? ?

? ? ? ? while(!que.empty())

? ? ? ? {

? ? ? ? ? ? queue<pair<int,int>>queTmp;

? ? ? ? ? ? while(!que.empty())

? ? ? ? ? ? {

? ? ? ? ? ? ? ? pair<int,int>f = que.front();

? ? ? ? ? ? ? ? que.pop();

? ? ? ? ? ? ? ? if(f.first-1>=0 && visited[f.first-1][f.second]==false && grid[f.first-1][f.second]==1)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? queTmp.push(pair<int,int>(f.first-1,f.second));

? ? ? ? ? ? ? ? ? ? visited[f.first-1][f.second]=true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? if(f.first+1<row && visited[f.first+1][f.second]==false&& grid[f.first+1][f.second]==1 )

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? queTmp.push(pair<int,int>(f.first+1,f.second));

? ? ? ? ? ? ? ? ? ? visited[f.first+1][f.second]=true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? if(f.second-1>=0 && visited[f.first][f.second-1]==false&& grid[f.first][f.second-1]==1)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? queTmp.push(pair<int,int>(f.first,f.second-1));

? ? ? ? ? ? ? ? ? ? visited[f.first][f.second-1]=true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? if(f.second+1<col && visited[f.first][f.second+1]==false&& grid[f.first][f.second +1 ]==1)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? queTmp.push(pair<int,int>(f.first,f.second+1));

? ? ? ? ? ? ? ? ? ? visited[f.first][f.second+1]=true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? que=queTmp;

? ? ? ? ? ? ret++;

? ? ? ? }

? ? ? ? ? for(int i=0;i<row;i++)

? ? ? ? {

? ? ? ? ? ? for(int j=0;j<col;j++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if(grid[i][j]==1 && visited[i][j]==false)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ?return -1;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? if(ret==0)

? ? ? ? {

? ? ? ? ? ? return 0;

? ? ? ? }

? ? ? ? return ret-1;

? ? }

文章来源:https://blog.csdn.net/yinhua405/article/details/135053970
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。