当前位置: 首页 > news >正文

算法手记5

🦄个人主页:修修修也

🎏所属专栏:刷题

⚙️操作环境:牛客网


一.腐烂的苹果

牛客网题目链接(点击即可跳转):腐烂的苹果_牛客题霸_牛客网

题目详情:

本题详情如下图:


题目思路:

本题解题思路如下:

        多源bfs,每层的坏果入队列,传染完周围的好果就出队列,直到队列为空,传染完毕,传染的层数就是用的时间.最后检查传染完还有没有好果,如果有那直接返回-1即可,否则返回time.


解题代码:

本题解题代码如下:

class Solution {
  public:
    int dx[4] = {0, 0, 1, -1};
    int dy[4] = {1, -1, 0, 0};
    int rotApple(vector<vector<int> >& grid) 
    {
        //多源bfs+最短路径
        queue<pair<int, int>> q;
        int time = 0;

        //所有坏果入队列
        for (int i = 0; i < grid.size(); i++) 
        {
            for (int j = 0; j < grid[0].size(); j++) 
            {
                if (grid[i][j] == 2)
                    q.push({i, j});
            }
        }
        //坏果开始bfs传染
        while (!q.empty()) 
        {
            int sz = q.size();//记录本层坏果个数,后续本层坏果传染统一算一分钟
            while (sz--) 
            {
                int x = q.front().first;
                int y = q.front().second;
                for (int i = 0; i < 4; i++) 
                {
                    int xi = x + dx[i];
                    int yi = y + dy[i];
                    if (xi >= 0 && xi < grid.size() && yi >= 0 && yi < grid[0].size() &&grid[xi][yi] == 1) 
                    {
                        grid[xi][yi] = 2;
                        q.push({ xi, yi });
                    }
                }
                q.pop();
            }
            time++;
        }
        //检查有无好果
        for (int i = 0; i < grid.size(); i++) 
        {
            for (int j = 0; j < grid[0].size(); j++) 
            {
                if (grid[i][j] == 1)
                    return -1;
            }
        }
        return time-1;
    }
};

结语

        说点啥好呢...原来被墙的原因是运营商直接把发往外网的请求给扔了...怪不得...好搞笑啊哈哈哈!这道题...让我闻到了一股熟悉的二叉树的味道...所以最终还是忘记它了吗...真的遗憾呐...

相关文章:

  • ngx_event_conf_t
  • Qt事件处理(重写event)
  • nginx不在默认的yum仓库的解决方法
  • libstdc++ GLIBCXX_3.4.20 not found 解决方法
  • 计算机毕业设计:基于SSM理发店造型中心网上预约评价系统
  • C11标准对于C语言的内存模型的描述
  • C++ 返回值优化(Return Value Optimization)
  • 学习TensorFlow前的NumPy核心知识点
  • C++学习之二叉树
  • S32K144入门笔记(十五):ADC(转换器部分)的解读
  • windows安装Elasticsearch
  • 科普:为何要对特征进行分箱?
  • C++单例模式精解
  • OSG 和 VTK 在JS仿真中应用的更详细对比分析,包括它们的技术特点、适用场景、优缺点以及如何选择或结合使用
  • softmax回归遇到的训练集准确率小于测试集准确率的问题
  • 【MySQL】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法
  • 使用 Docker 部署 MySQL 8
  • Kotlin知识体系(二) : Kotlin的七个关键特性
  • 如何在 Web Component 中优雅地使用 React
  • 代码随想录算法训练营第32天 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
  • 湖南营销型网站建设案例/百度大搜
  • wordpress 速度优化/长春seo关键词排名
  • 做tcf法语听力题的网站/杭州网站优化效果
  • 一般网站建设需要多少钱/成功的软文营销案例
  • 中间商网站怎么做/湖北网站seo设计
  • 龙华做网站多少钱/山西网站seo