深圳网站建设公司排行wordpress 文章完整导出文章及文章中的图片
🦄个人主页:修修修也
🎏所属专栏:刷题
⚙️操作环境:牛客网
一.腐烂的苹果
牛客网题目链接(点击即可跳转):腐烂的苹果_牛客题霸_牛客网
题目详情:
本题详情如下图:
题目思路:
本题解题思路如下:
多源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;} };
结语
说点啥好呢...原来被墙的原因是运营商直接把发往外网的请求给扔了...怪不得...好搞笑啊哈哈哈!这道题...让我闻到了一股熟悉的二叉树的味道...所以最终还是忘记它了吗...真的遗憾呐...