告别剧荒!隐藏在B站里的“免费大片库”:手把手教你解锁真人影视剧的正确打开方式

核心内容摘要

破次元的灵魂共振:噜噜社App官方版——你手机里不可或缺的奇幻体验
《含羞草实验室隐藏路径2023:一次超乎想象的之旅》

成色18K.8811.7V91蓝莓

思路/步骤以下图为例1统计所有初始就腐烂的橘子的位置加到列表q中现在q [(0,

]。

2初始化答案ans 0模拟橘子腐烂的过程不断循环直到没有新鲜的橘子或者q为空。

3ans加1在第ans 1分钟遍历q中橘子的四方向相邻的新鲜橘子把这些橘子腐烂q更新为这些橘子的位置现在q [(0,

,(1,

]。

4ans加1在第ans 2分钟遍历q中橘子的四方向相邻的新鲜橘子把这些橘子腐烂q更新为这些橘子的位置现在q [(0,

,(1,

]。

5ans加1在第ans 3分钟遍历q中橘子的四方向相邻的新鲜橘子把这些橘子腐烂q更新为这些橘子的位置现在q [(2,

]。

6ans加1在第ans 4分钟遍历q中橘子的四方向相邻的新鲜橘子把这些橘子腐烂q更新为这些橘子的位置现在q [(2,

]。

7由于没有新鲜橘子退出循环。

为了判断是否有永远不会腐烂的橘子如示例2我们可以统计初始新鲜橘子的个数fresh。

在BFS中每有一个新鲜橘子被腐烂就把fresh减一这样最后如果发现fresh0就意味着有橘子永远不会腐烂返回-1。

疑问如果代码中不在while循环中判断fresh0会发生什么答会在腐烂完所有新鲜橘子后多循环一次这会导致ans比实际多1。

复杂度分析1时间复杂度O(mn)其中m和n分别为grid的行数和列数。

2空间复杂度O(mn)。

附代码class Solution { private static final int[][] DIRECTIONS ; //四方向 public int orangesRotting(int[][] grid) { int m grid.length; int n grid[0].length; int fresh 0; Listint[] q new ArrayList(); for(int i 0;i m;i){ for(int j 0;j n;j){ if(grid[i][j]

{ fresh; //统计新鲜橘子的个数 }else if(grid[i][j]

{ q.add(new int[]{i,j}); //一开始就腐烂的橘子 } } } int ans 0; while(fresh 0 !q.isEmpty()){ ans; //经过一分钟 Listint[] tmp q; q new ArrayList(); for(int[] pos : tmp){ //已经腐烂的橘子 for(int[] d : DIRECTIONS){ //四方向 int i pos[0] d[0]; int j pos[1] d[1]; if(i 0 i m j 0 j n grid[i][j]

{ //新鲜橘子 fresh--; grid[i][j] 2; //变成腐烂的橘子 q.add(new int[]{i,j}); } } } } return fresh 0 ? -1 : ans; } }

成片ppt的网站免费-成片ppt的网站免费应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123