力扣---腐烂的橘子

题目:

bfs思路:

感觉bfs还是很容易想到的,首先定义一个双端队列(队列也是可以的~),如果值为2,则入队列,我这里将队列中的元素定义为pair<int,int>。第一个int记录在数组中的位置,即将二维数组映射到一维数组。没明白的小伙伴可以先看看力扣hot---岛屿数量-CSDN博客。第二个int记录这个橘子第几分钟被感染。最后取最大的分钟就可以啦!(还要检查一下是否有没感染到的橘子,在橘子入队列的时候,记得将gridxy改为2就可以记录橘子被感染了)

代码:

C++:

cpp 复制代码
class Solution {
public:
    int p_x[4]={-1,1,0,0};
    int p_y[4]={0,0,-1,1};
    int orangesRotting(vector<vector<int>>& grid) {
        deque<pair<int,int>> q;
        int m=grid.size();
        int n=grid[0].size();
        int cnt=0;
        int res=0;
        //初始化q
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(grid[i][j]==2){
                    q.push_back({i*n+j,cnt}); //把数组转换成1维,并且记录第几分钟
                }
            }
        }
        //开始腐烂
        while(!q.empty()){
            //pop
            auto temp=q.front();
            q.pop_front();
            //腐烂四周
            int tempx=temp.first/n;
            int tempy=temp.first%n;
            int tempcnt=temp.second;
            //if(grid[tempx][tempy]==2){continue;}
            for(int k=0;k<4;k++){
                int x=tempx+p_x[k];
                int y=tempy+p_y[k];
                if(x>=0 && x<m && y>=0 && y<n){
                    if(grid[x][y]==0||grid[x][y]==2){continue;}
                    grid[x][y]=2;
                    q.push_back({x*n+y,tempcnt+1});
                    cnt=max(cnt,tempcnt+1);
                }
            }
        }
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(grid[i][j]==1){
                    return -1;
                }
            }
        }
        return cnt;
    }
};

Python代码就不附啦,因为和今天发布的力扣---接雨水---单调队列-CSDN博客Python代码很像哦

相关推荐
强哥聊算力2 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
Navigator_Z5 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
CCblandy6 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
mmmmath_36 小时前
LeetCode.104.二叉树的最大深度
数据结构·leetcode
YangYang9YangYan7 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法
jsjzsl27 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入
人工智能·python·算法
程序员清风7 小时前
最短路径算法:BFS、Dijkstra 与 Floyd
java·算法·宽度优先
梦帮科技7 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
171320330计算机毕设编程9 小时前
计算机毕业设计 基于YOLO改进算法的车辆特征识别系统设计与实现--lw
java·大数据·python·sql·算法