[算法][BFS][leetcode]994. 腐烂的橘子

题目地址

https://leetcode.cn/problems/rotting-oranges/description/


错误解法

class Solution {public int orangesRotting(int[][] grid) {//层序遍历int ans = 0;for (int i =0;i<grid.length;i++) {for(int j =0;j<grid[0].length;j++){boolean flag =false;if(grid[i][j]==2){//感染上边if (i-1>=0&&grid[i-1][j]==1){grid[i-1][j]=2;flag=true;}//感染左边if (j-1>=0&&grid[i][j-1]==1){grid[i][j-1]=2;flag=true;}//感染下边if(j+1<grid[0].length&&grid[i][j+1]==1){grid[i][j+1]=2;flag=true;}//感染右边if (i+1<grid.length&&grid[i+1][j]==1){grid[i+1][j]=2;flag=true;}}if (flag){ans++;}}}for (int i =0;i<grid.length;i++) {for(int j =0;j<grid[0].length;j++){if (grid[i][j]==1){return -1;}}}return ans;}
}

测试代码

    public static void main(String[] args) {int [][] as  = {{2,0,1,1,1,1,1,1,1,1},{1,0,1,0,0,0,0,0,0,1},{1,0,1,0,1,1,1,1,0,1},{1,0,1,0,1,0,0,1,0,1},{1,0,1,0,1,0,0,1,0,1},{1,0,1,0,1,1,0,1,0,1},{1,0,1,0,0,0,0,1,0,1},{1,0,1,1,1,1,1,1,0,1},{1,0,0,0,0,0,0,0,0,1},{1,1,1,1,1,1,1,1,1,1}};orangesRotting(as);}

错误结果

错误原因

正确解法(BFS)

 public  int orangesRotting(int[][] grid) {//定义每个元素周围都四个方向int[][] direction = new int[][]{{-1,0},//上{0,1},//下{0,-1},//左{1,0}//右};//需要一个队列记录遍历得顶点List<int[]> q = new ArrayList<>();//行int R = grid.length;//列int C = grid[0].length;//新鲜橘子个个数 记录的好处是可以通过它等不等于0判断是否有橘子死活没有被感染int fresh = 0;for(int i=0;i<R;i++){for (int j=0;j<C;j++){if(grid[i][j]==1){fresh++;}if (grid[i][j]==2){q.add(new int[]{i,j});}}}int ans = -1;while (!q.isEmpty()) {ans++; // 经过一分钟List<int[]> tmp = q;q = new ArrayList<>();for (int[] pos : tmp) { // 已经腐烂的橘子for (int[] d : direction) { // 四方向int i = pos[0] + d[0];int j = pos[1] + d[1];if (0 <= i && i < R && 0 <= j && j < C && grid[i][j] == 1) { // 新鲜橘子fresh--;grid[i][j] = 2; // 变成腐烂橘子q.add(new int[]{i, j});}}}}return fresh > 0 ? -1 : Math.max(ans, 0);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/696809.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.使用uView让tabbar更优雅

文章目录 1. 使用uView让tabbar更优雅1.1. 怎么才优雅&#xff1f;1.2. uView的tabbar合适吗&#xff1f;1.3. 引入项目过程1.3.1. 修改pages.json1.3.2. 把demo里面的pages先拷贝过来1.3.3. 引入tabbar的图片1.3.4. 运行 1.4. 我们自己的项目适配 1. 使用uView让tabbar更优雅 …

GEE数据集——东南亚区域油棕种种植分布(油棕榈树种植园的概率)数据集

森林数据伙伴关系围绕对全球商品驱动的森林砍伐、森林退化和恢复工作的全球监测&#xff0c;加强合作与应用。 世界各国政府和公司都承诺帮助制止砍伐森林和加快恢复&#xff0c;以避免气候变化带来的最坏影响&#xff0c;防止生物多样性丧失&#xff0c;保护森林对人类和自然…

汇昌联信电商:拼多多新手怎么做店铺的免费流量会慢慢起来?

在拼多多上开店&#xff0c;新手们往往面临着如何吸引免费流量的挑战。毕竟&#xff0c;流量是店铺生存和发展的血脉&#xff0c;没有流量&#xff0c;就没有销量&#xff0c;店铺也就失去了生命力。那么&#xff0c;作为拼多多新手&#xff0c;如何做才能让店铺的免费流量慢慢…

Dev-C++的下载和安装教程(超详细图文,小白入门)

Dev-C&#xff08;或者叫做Dev-Cpp&#xff09;是Windows环境下的一个轻量级C/C集成开发环境&#xff08;IDE&#xff09;。它是一款自由软件&#xff0c;遵守GPL许可协议分发源代码。 Dev-C集合了功能强大的源码编辑器、MingW64/TDM-GCC编译器、GDB调试器和AStyle格式整理器等…

通过 OmniPlan 4 解决项目管理中的实际问题

项目管理是一个复杂的过程&#xff0c;涉及规划、执行、监控和控制等多个方面。OmniPlan 4作为一款专业的项目管理软件&#xff0c;能够帮助项目经理和团队成员解决实际项目管理中遇到的各种问题。以下是通过OmniPlan 4解决一些常见项目管理问题的介绍。 OmniPlan 4 下载 https…

01-项目功能,架构设计介绍

稻草快速开发平台 开发背景就是通过此项目介绍使用SpringBoot Vue3两大技术栈开发一个拥有动态权限、路由的前后端分离项目&#xff0c;此项目可以继续完善&#xff0c;成为一个模板为将来快速开发做铺垫。 实现功能 开发流程 通过命令构建前端项目在VSCode中开发&#xff…

STK12 RPO模块学习(2)

一、Coast RPO Sequence 这个序列运行卫星直到它达到了下面三个条件之一。 1&#xff09;截至时间。2)圈数到达了限制。3&#xff09;其他条件&#xff0c;比如近地点。 默认情况下&#xff0c;Astrogator使用“Earth HPOP Default v10”预报器。你能够修改呈其他修改器。下…

【数据结构】详解队列

现在我们来掌握一下队列&#xff01;如果有对往期知识有不足地方&#xff0c;可翻阅之前文章哦&#xff01; 个人主页&#xff1a;小八哥向前冲~-CSDN博客 所属专栏&#xff1a;数据结构【c语言版】_小八哥向前冲~的博客-CSDN博客 栈和队列的实现其实都是对你顺序表和链表的检验…

Jmeter 性能-阶梯负载最终请求数

1、设置阶梯加压线程组请求参数 说明&#xff1a; 每隔2秒钟&#xff0c;会在1秒内启动5个线程 每次线程加载之后都会运行2s然后开始下一次线程加载 最终会加载50个线程并持续运行30s 50个线程持续运行30s后&#xff0c;会每隔2秒钟停止5个线程&#xff0c;剩余的线程继续负…

SpringCloud微服务01-MybatisPlus-Docker

https://b11et3un53m.feishu.cn/wiki/MWQIw4Zvhil0I5ktPHwcoqZdnec 一、微服务介绍 单体架构所有功能集群在一个架构中&#xff0c;难以维护复杂需求 微服务之间是不同的TomCat要跨服务查询&#xff0c; 学习是如何拆分单体架构为微服务 二、MybatisPlus 1.快速入门 ①入门…

基于SpringBoot+Vue的教师个人成果管理系统

初衷 在后台收到很多私信是咨询毕业设计怎么做的&#xff1f;有没有好的毕业设计参考? 能感觉到现在的毕业生和当时的我有着同样的问题&#xff0c;但是当时的我没有被骗&#xff0c; 因为现在很多人是被骗的&#xff0c;还没有出学校还是社会经验少&#xff0c;容易相信别人…

前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言 &#x1f44b;一、Nginx简介 &#x1f4da;二、常见的Web服务器架构 &#x1f300;&#x1f4cc; 架构概述&#x1f4cc; Nginx的深入探讨 三、正向代理与反向代理 &#x1f52e;&#x1f4cc; 正向代理工作原理&#…