leetcode994腐烂的橘子

2023-10-10 22:59
文章标签 橘子 腐烂 leetcode994

本文主要是介绍leetcode994腐烂的橘子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

leetcode994 腐烂的橘子

题目描述

在这里插入图片描述在这里插入图片描述

题目解析

深度优先遍历问题,需要利用队列来存取需要遍历的节点,同时为了维护遍历深度,需要维护一个字典来存取遍历深度

public int orangesRotting(int[][] grid){int[] dr = {-1, 1, 0, 0};int[] dc = {0, 0, -1, 1};int R = grid.length;int C = grid[0].length;int ans = 0;Queue<Integer> queue = new ArrayDeque<Integer>();Map<Integer, Integer> map = new HashMap<Integer, Integer>();for(int r = 0; r < R; r ++){for(int c = 0; c < C; c ++){// 把所有腐烂的橘子装入队列if(grid[r][c] == 2){int ucode = r * C + c;   //给每一个腐烂橘子节点进行编码 为 r * C + Rqueue.add(ucode);map.put(ucode, 0);}}}while(! queue.isEmpty()){int ucode = queue.remove();int r = ucode / C;  // 从编码中恢复其行号和列号int c = ucode % C;for(int k = 0; k < 4; k ++){    //遍历其上下左右节点int nbR = r + dr[k];int nbC = c + dc[k];// 找到邻近的没有腐烂的橘子if(nbR >= 0 && nbR < R && nbC >= 0 && nbC < C && grid[nbR][nbC] == 1){grid[nbR][nbC] = 2; //将未腐烂橘子变成腐烂橘子int code = nbR * C + nbC;queue.add(code); //将刚被腐烂的橘子压入队列map.put(code, map.get(ucode) + 1); // 设置橘子的腐烂时间为传播腐烂橘子的时间加1ans = map.get(code);}}}// 查询是否仍然有未腐烂的橘子,若有则表示存在橘子不能被腐烂,返回-1for(int[] row : grid)for(int num : row)if(num == 1)return -1;return ans;}

这篇关于leetcode994腐烂的橘子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183706

相关文章

Day 6:994 腐烂的橘子

994 腐烂的橘子 1. 题目描述2. 解题思路3. 代码实现(广度优先遍历) 1. 题目描述 994 腐烂的橘子 2. 解题思路 (1) 首先统计新鲜橘子的数量并将腐烂橘子坐标加入初始队列中; (2) 使用BFS遍历的思想依次遍历每一层,首先判断是否存在新鲜橘子,若存在则时间+1; (3) 对于每一层若遇到新鲜橘子则将其变为腐烂橘子并加入队列中,同时新鲜橘子数-1; (4)

秋招突击——算法练习——8/26——图论——200-岛屿数量、994-腐烂的橘子、207-课程表、208-实现Trie

文章目录 引言正文200-岛屿数量个人实现 994、腐烂的橘子个人实现参考实现 207、课程表个人实现参考实现 208、实现Trie前缀树个人实现参考实现 总结 引言 正文 200-岛屿数量 题目链接 个人实现 我靠,这道题居然是腾讯一面的类似题,那道题是计算最大的岛屿面积,如果当时没做出来,现在得哭死!好在做出来了!这道题单纯使用回溯实现的,然后修改一下地图的坐标

【hot100篇-python刷题记录】【腐烂的橘子】

R6-图论 思路:尽可能从中间开始吧,向四周扩散。 实际上就可以理解为BFS搜索。  使用rot,fresh集合分别记录腐烂、新鲜的集合的元素下标 使用集合是为了更方便增减元素(直接使用-=即可,集合加减) 遍历,rot集合中的每一个元素,对其进行上下左右移动,判断是否存在 存在的话就fresh-rot集合得到最后的集合。 class Solution:def orangesRo

2024-5-12——吃掉 N 个橘子的最少天数

2024-5-12 题目来源我的题解方法一 深度搜索 超时方法二 动态规划 超内存方法三 灵神题解 题目来源 力扣每日一题;题序:1553 我的题解 方法一 深度搜索 超时 直接使用深度搜索,每次选择一种策略,然后判断最小值 class Solution {int res=Integer.MAX_VALUE;public int minDays(int n)

LeetCode 0994.腐烂的橘子:广度优先搜索(BFS)

【LetMeFly】994.腐烂的橘子:广度优先搜索(BFS) 力扣题目链接:https://leetcode.cn/problems/rotting-oranges/ 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直

多源bfs,LeetCode 994. 腐烂的橘子

一、题目 1、题目描述 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。 2、接口描述 python3 ​ class Solutio

六把橘子树吉他音源 Orange Tree Samples Guitars Bundles Kontakt

Orange Tree Samples Guitars Bundles | 10.3GB Orange Tree Samples 六把原声木吉他和电吉他音源合集,Kontakt加载音色库。 Acoustic Steel Strings Acoustic SLIDE Lap Steel Lap Steel SLIDE Stratosphere Strawberry 1&2 Kont

LeetCode 每日一题 ---- 【1553.吃掉 N 个橘子的最少天数】

LeetCode 每日一题 ---- 【1553.吃掉 N 个橘子的最少天数】 1553.吃掉N个橘子的最少天数方法:记忆化搜索 1553.吃掉N个橘子的最少天数 方法:记忆化搜索 前两天给树浇水,原来浇的是橘子树哇 今天直接来了个大的【困难】 class Solution {Map<Integer, Integer> memo = new HashMap<Integer,

LeetCode 每日一题 ---- 【994. 腐烂的橘子】

LeetCode 每日一题 ---- 【994. 腐烂的橘子】 994.腐烂的橘子方法:多源BFS 994.腐烂的橘子 方法:多源BFS 昨天没吃完的橘子今天就坏掉了 可算是掉进橘子窝了 题目提到了一个腐烂掉全部橘子所需要的最小分钟,其实只需要满足从上往下每一步都尽最大可能腐烂到所有橘子就可以满足答案的最小分钟 一个多源BFS,第一步统计初始新鲜的橘子和腐烂的橘子,并将腐

NC398 腐烂的苹果

腐烂的苹果 一个腐烂的苹果每分钟可以向上下左右四个方向扩展,扩展之后,又会有新的腐烂的苹果,一直去腐蚀好的苹果,求多少分钟后,网格中全是烂苹果。 第一次做这道题的时候,想到这道题考察的其实是多源BFS的知识点了。 多源BFS 把所有的源点当成一个超级源点。问题就变成了单一的单源最短路问题 将所有腐烂的苹果全部放到一个队列里面,然后层层的向外扩展,每次扩展都要把队列里面所有的烂苹果