994. 腐烂的橘子
题目:
思路:
【1】广度搜索处理感染问题
代码展示:
//时间1 ms 击败 100% //内存39.9 MB 击败 91.75% class Solution { /** * 坏橘子感染好橘子,就是扩散的方式,这种用广度搜索的方式是最好处理的 * @param grid * @return */ public int orangesRotting(int[][] grid) { int row = grid.length, col = grid[0].length; //坏橘子的坐标数组集合(x,y) Queue<int[]> que = new LinkedList<int[]>(); // 好橘子的个数 int count = 0; for (int i = 0; i < row; i++){ for (int j = 0; j < col; j++){ if (grid[i][j] == 2){ que.add(new int[]{i,j}); }else if (grid[i][j] == 1){ count++; } } } // 没有好的橘子,就不需要感染 if (count == 0) return 0; // 四个方向,向上,向左,向下,向右 int step = 0; int[][] pathList = new int[][]{{-1,0},{0,-1},{1,0},{0,1}}; while (!que.isEmpty() ){ int size = que.size(); int cur_count = count; while (size-- > 0){ int[] tem = que.poll(); for (int[] p : pathList){ int newRow = tem[0] + p[0]; int newCol = tem[1] + p[1]; // 坐标在限制内,且是好橘子,那么这一圈就会被感染成坏的 if (newRow >= 0 && newCol >= 0 && newRow < row && newCol < col && grid[newRow][newCol] == 1){ //感染成坏的 grid[newRow][newCol] = 2; //塞入队列,等待下一次感染 que.add(new int[]{newRow,newCol}); //好的橘子减少 count--; } } } if (cur_count != count) step++; } return count > 0 ? -1 : step; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现