[实战分享] 1688选品直接上架亚马逊?浅析如何用 Python+AI 实现商品图“一键清洗”与汉化

核心内容摘要

从原理到实践:掌握改进DH法的建模精髓与步骤优化
终极指南:GPT4 LangChain响应式PDF聊天机器人如何完美适配移动端与桌面端

35KV电缆故障在线监测及故障预警测距系统 在线式电力电缆故障测距沃伦森

思路/步骤以下图为例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; } }

2015小明加密通道最新更新版-2015小明加密通道最新更新版应用

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

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