zoukankan      html  css  js  c++  java
  • leetcode 994.腐烂的橘子

    题目:

    在给定的网格中,每个单元格可以有以下三个值之一:

    • 值 0 代表空单元格;
    • 值 1 代表新鲜橘子;
    • 值 2 代表腐烂的橘子。

    每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。

    返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1

    分析:

    最近在看广度优先搜素的题目,这个是比较简单基础的题了。

    腐烂的橘子会把靠近他的新鲜的橘子腐蚀,那么就是只要从所有坏的橘子的地方一层一层往外遍历就可以了。

    代码:

     1 //5ms 97%
     2 class Solution {
     3     public int orangesRotting(int[][] grid) {
     4         Queue<int[]> q=new LinkedList<>();
     5         int h=grid.length,w=grid[0].length,time=0;
     6         for(int n=0;n<h;++n)
     7             for(int m=0;m<w;++m)
     8                 if(grid[n][m]==2) {
     9                     int[] po= {0,n,m};
    10                     q.add(po);
    11                 }
    12         while(!q.isEmpty()) {
    13             int[] g=q.poll();
    14             time=time>g[0]?time:g[0];
    15             if(g[1]+1<h&&grid[g[1]+1][g[2]]==1) {
    16                 grid[g[1]+1][g[2]]=2;
    17                 int[] po= {g[0]+1,g[1]+1,g[2]};
    18                 q.add(po);            
    19             }
    20             if(g[1]-1>=0&&grid[g[1]-1][g[2]]==1) {
    21                 grid[g[1]-1][g[2]]=2;
    22                 int[] po= {g[0]+1,g[1]-1,g[2]};
    23                 q.add(po);            
    24             }
    25             if(g[2]-1>=0&&grid[g[1]][g[2]-1]==1) {
    26                 grid[g[1]][g[2]-1]=2;
    27                 int[] po= {g[0]+1,g[1],g[2]-1};
    28                 q.add(po);            
    29             }
    30             if(g[2]+1<w&&grid[g[1]][g[2]+1]==1) {
    31                 grid[g[1]][g[2]+1]=2;
    32                 int[] po= {g[0]+1,g[1],g[2]+1};
    33                 q.add(po);            
    34             }
    35         }
    36         for(int n=0;n<h;++n)
    37             for(int m=0;m<w;++m)
    38                 if(grid[n][m]==1) 
    39                     return -1;
    40         return time;
    41     }
    42 }
  • 相关阅读:
    亲历dataguard的一些经验问答题
    [转]ORA-38500: USING CURRENT LOGFILE option not available without stand
    修改npm全局安装模式的路径
    Vue 环境搭建
    Linux下查看系统版本号信息的方法
    每天一个Linux命令(12):su命令
    Ubuntu 首次给root用户设置密码
    适用于Linux的windows子系统
    IDEA的terminal设置成Linux的终端一样
    Windows模拟linux终端工具Cmder+Gow
  • 原文地址:https://www.cnblogs.com/CHAHA123/p/10736353.html
Copyright © 2011-2022 走看看