994 LeetCode 腐烂的橘子

题目描述:
在这里插入图片描述

思路:
首先编写一个判断网格中新鲜橘子的数量的函数
然后再查找给定网格中的腐烂的橘子,在经过一分钟后,再次判断新鲜橘子的数量,如果新鲜橘子的数量没有变化,那么返回-1,反之再次循环
直到新鲜橘子的数量是0

代码如下:

class Solution {
public:
    int nums(vector<vector<int>>A){
        int s=0;
        for(int i=0;i<A.size();i++){
            for(int j=0;j<A[0].size();j++){
               if(A[i][j]==1)
               s++;
            }
        }
        return s;
    }
    int orangesRotting(vector<vector<int>>& grid) {
        int sum=0;
        int pre=nums(grid);
        while(pre>0){
          vector<vector<int>>temp=grid;
            for(int i=0;i<grid.size();i++){
                for(int j=0;j<grid[0].size();j++){
                    if(grid[i][j]==2){
                        if(i>0){
                           if(temp[i-1][j]==1)
                           temp[i-1][j]=2;
                        }
                        if(i<grid.size()-1){
                           if(temp[i+1][j]==1)
                           temp[i+1][j]=2;
                        }
                        if(j>0){
                           if(temp[i][j-1]==1)
                           temp[i][j-1]=2;
                        }
                        if(j<grid[0].size()-1){
                           if(temp[i][j+1]==1)
                           temp[i][j+1]=2;
                        }
                    }
                }
            }
            int cur=nums(temp);
            if(cur==pre)
            return -1;
            else {
                sum++;
                pre=cur;
                grid=temp;
            }
        }
        return sum;
    }
};
发布了158 篇原创文章 · 获赞 0 · 访问量 1604

猜你喜欢

转载自blog.csdn.net/peachzy/article/details/104672637