Rotting Oranges - LeetCode
2024-10-20 07:41:58
题目链接
注意点
解法
解法一:bfs。首先先统计所有新鲜的橘子数目fresh
,如果fresh
大于0则一直执行bfs。我们只处理昨天刚腐烂的橘子,grid[i][j]
的值就表示第几天腐烂的橘子,由于新鲜橘子的值一开始就是2,所以每次修改的时候都要改为day+3
即 day+1+2
(2是本来就有的,1表示经过了一天)。如果bfs之后发现新鲜橘子数没有减少则return -1,否则继续下一天的腐烂。
class Solution {
public:
int bfs(vector<vector<int>>& grid,int x,int y,int day)
{
if(x < 0||y < 0||x >= grid.size()||y >= grid[x].size()||grid[x][y] != 1) return 0;
grid[x][y] = day+3;
return 1;
}
int orangesRotting(vector<vector<int>>& grid) {
int i,j,day = 0,fresh = 0;
for(i = 0;i < grid.size();i++)
{
for(j = 0;j < grid[i].size();j++)
{
if(grid[i][j] == 1) fresh += 1;
}
}
while(fresh > 0)
{
int old_fresh = fresh;
for(i = 0;i < grid.size();i++)
{
for(j = 0;j < grid[i].size();j++)
{
if(grid[i][j] == day+2)
{
fresh -= bfs(grid,i,j+1,day)+bfs(grid,i,j-1,day)+bfs(grid,i+1,j,day)+bfs(grid,i-1,j,day);
}
}
}
if(old_fresh == fresh) return -1;
day++;
}
return day;
}
};
小结
- bfs重要的是找好边界条件以及每次修改的值。
最新文章
- GIT FLOW 时序图
- git命令使用
- 在windows下新建maven项目
- Hadoop I/O操作原理整理
- GCC编译器和GDB调试器常用选项
- POJ 3107
- silverlight visifire控件图表制作——silverlight 静态页面xaml
- win8.1 安装
- java 易错选择题 编辑中
- Django auth认证
- PGSQL-通过SQL语句来计算两个日期相差的天数
- Tomcat启动项目时内存溢出问题如何解决
- 将 django部署到 heroku上
- 学习笔记52—coverletter
- mysql数据类型和使用方法
- Spring4.0+quartz2.2.1+memcahce多台nginx实现均衡
- System.Threading.Tasks.Task 任务引起的IIS应用程序池崩溃
- perl非root用户安装模块
- P2878 [USACO07JAN]保护花朵Protecting the Flowers
- IO流(一)File类
热门文章
- Python之面向对象-反射
- SpringCloud版本问题
- dvwa——命令注入&;文件包含
- 第十二次ScrumMeeting博客
- OO学习总结与体会
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算 第二周
- “吃神么,买神么”的第一个Sprint计划(第六天)
- Alpha版本冲刺(七)
- ASP.NET MVC 3.0 参考源码索引
- Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序