题解 | 腐烂的苹果(广度优先算法)

腐烂的苹果

https://www.nowcoder.com/practice/54ab9865ce7a45968b126d6968a77f34

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param grid int整型ArrayList<ArrayList<>> 
     * @return int整型
     */

      
    public int rotApple (ArrayList<ArrayList<Integer>> grid) {
        //上下左右
       int []dx={0,0,-1,1};
       int []dy={-1,1,0,0};
       int ret=0;
       int m=grid.size();
       int n=grid.get(0).size();
       boolean vis[][]=new boolean[m][n];
       LinkedList<int []>queue=new LinkedList<>();
       for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            if(grid.get(i).get(j)==2){
                queue.add(new int[]{i,j});
            }
        }
       }
       while(!queue.isEmpty()){
          int sz=queue.size();
          while(sz--!=0){
            int []t=queue.poll();
            int a=t[0],b=t[1];//x,y
            for(int i=0;i<4;i++){
                int x=a+dx[i],y=b+dy[i];
                if(x>=0&&x<m&&y>=0&&y<n&&!vis[x][y]&&grid.get(x).get(y)==1){
                    vis[x][y]=true;
                    queue.add(new int[]{x,y});
                }
            }
          }
          ret++;
       }
       for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            if(grid.get(i).get(j)==1&&!vis[i][j]){
                return -1;
            }
        }
       }

        return ret-1;
    }
}

全部评论

相关推荐

阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
09-21 21:14
门头沟学院
否极泰来来来来:和他说:这里不好骂你,我们加个微信聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务