题解 | 腐烂的苹果

腐烂的苹果

https://www.nowcoder.com/practice/54ab9865ce7a45968b126d6968a77f34?tpId=196&tqId=40529&ru=/exam/oj

import java.util.*;

//多源bfs
public class Solution {
  //用于访问四周节点
    int[] dx = {0,0,1,-1};
    int[] dy = {1,-1,0,0};
    public int rotApple (ArrayList<ArrayList<Integer>> grid) {
        int m = grid.size();
        int n = grid.get(0).size();
        Queue<int []> queue = new LinkedList<>();
        boolean[][] vis = new boolean[m][n];
        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});

                }
            }
            
        }
        int ret = 0;
        while(!queue.isEmpty()){//有烂苹果,开始腐烂
            int sz = queue.size();
            while(sz--!=0){//让所有烂苹果开始传染
                int[] t = queue.poll();
                int a = t[0],b=t[1];
                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++;
        }//当队列为空,说明传染结束了
	  //此时如果还有1说明有苹果没有被污染
        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;//返回-1

                }
            }
            
        }
        
        
        return ret-1;
    }
}

全部评论

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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