力扣---腐烂的橘子

题目:

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代码很像哦

相关推荐
一次旅行32 分钟前
RLHF全链路深度解析:Reward Model数学推导+PPO完整实战,对比GRPO轻量化方案
人工智能·算法·机器学习
Wang's Blog34 分钟前
AI Agent白手起家29: Few Shot 提示词工程实战
人工智能·算法
June`1 小时前
warp shuffle指令
c++·人工智能·算法·cuda
geovindu1 小时前
go:Bit Operation Algorithm
开发语言·后端·算法·golang·位运算法
Wang's Blog2 小时前
AI Agent白手起家31: 根据语义相似度动态选择 Few Shot 示例
人工智能·算法
白白白小纯2 小时前
每日算法day3—回文链表,链表分割
c语言·数据结构·算法·leetcode
手写码匠3 小时前
华为云Flexus+DeepSeek征文|Dify 构建企业级联网搜索 Agent:查询改写、多源检索与引用溯源实战
人工智能·深度学习·算法·aigc
tudousisi2223 小时前
B3928 [GESP202312 四级] 田忌赛马
算法
七夜zippoe3 小时前
DolphinDB 能耗统计分析实战:报表生成、同比环比与定额对比
人工智能·算法·dolphindb·报表生成·能耗统计·定额对比
为啥全要学3 小时前
在大语言模型上使用 PPO 算法
人工智能·算法·语言模型