腐烂的橘子

腐烂的橘子

读完题目感觉也就是个bfs的题。好吧 今天咳嗽咳到睡不着 直接起来做题了。。

思路:直接把最开始所有的腐烂的位置加入队列,然后bfs的时候每次取出的是腐烂的所有当前层橘子,

思路感觉一直都很清晰,就是代码挺复杂的还。

直接写代码吧:

cpp 复制代码
class Solution {
    typedef pair<int,int> PII;
    queue<PII>q;
    int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0};
public:
    int orangesRotting(vector<vector<int>>& grid) {
        int ans=0;//所需分钟数
        int n=grid.size();
        int m=grid[0].size();
        int xxjz=0;//新鲜橘子个数
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(grid[i][j]==2)
                {
                    q.push({i,j});
                }
                else if(grid[i][j]==1)
                {
                    xxjz++;
                }
            }
        }
        if(xxjz==0) return 0;//一开始就没有新鲜橘子
        if(q.empty()) return -1;//没有腐烂的橘子但是有新鲜的橘子,故不可能
        while(!q.empty())
        {
            int sz=q.size();
            while(sz>0)
            {
                auto t=q.front();
                q.pop();
                sz--;
                int x=t.first;
                int y=t.second;
                for(int i=0;i<4;i++)
                {
                    int nx=x+dx[i];
                    int ny=y+dy[i];
                    if(nx>=0&&nx<grid.size()&&ny>=0&&ny<grid[0].size()&&grid[nx][ny]==1)
                    {
                        q.push({nx,ny});
                        grid[nx][ny]=2;
                        xxjz--;
                    }
                }
            }
            ans++;  //这样写 ans 每次循环都会增加,即使这一轮并没有腐烂新的橘子。这个问题会导致最终返回的结果比实际所需的时间多1。
        }
        if(xxjz!=0) return -1;
        return ans-1;
    }
};

感觉自己写这一块已经有点那个意思了,嘻嘻。

相关推荐
ZhengEnCi7 小时前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
罗西的思考7 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
夜不会漫长9 小时前
C++:红黑树
数据结构·算法
AI备案指南-满满10 小时前
算法备案审核不通过,一般是什么原因?
java·人工智能·算法·大模型备案·算法备案·大模型登记
Ramble_Naylor10 小时前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
秋天的怀念_David10 小时前
算法一千零一夜 · 第二十三夜 电力民生写成的曲线
java·程序人生·算法
不一样的故事12610 小时前
NB/T 47013.8-2015 附录D 吸枪技术
人工智能·经验分享·算法
通问AI10 小时前
用 200 行 Python 给文档库做「上下文完整度」自检:四个可复算的检查项
算法
揽星河..10 小时前
【C语言】扫雷游戏
c语言·算法·游戏
丘山录10 小时前
本地部署 LongCat-2.5,要 7 台机器我只有 4 台
人工智能·算法