leetcode练习日常打卡三---腐烂的橘子--------上手难度-easy-middle

这是leetcode标识easy的题目,可能思路清晰点的确可以跟我说这是easy难度,虽然坑爹也算是解决了把 。
先看看题目:
leetcode练习日常打卡三---腐烂的橘子--------上手难度-easy-middle_第1张图片
下面可以看看代码:

class Solution {
    public int orangesRotting(int[][] grid) {
     int minu=0;
        //判断是否有坏的,如果有则感染返回感染时间
        if (hasBad(grid)){
           return defCount(grid,minu);
        }else if(hasNew(grid)){
            return -1;
        }else{
            return 0;
        }

    }
     //感染返回感染时间
    public static int defCount(int[][]grid,int minu){

        int[][] newgrid=new int[grid.length][grid[0].length];
         //给新的数组赋值
        for (int i=0;i<grid.length;i++) {
            for (int j = 0; j < grid[i].length; j++) {
                newgrid[i][j]=grid[i][j];
            }
        }
         boolean flag=false;
        for (int i=0;i<grid.length;i++) {
            for (int j = 0; j < grid[i].length; j++) {
                if(grid[i][j]==2){
                    //将腐烂的扣掉
                    newgrid[i][j]=0;
                    //对边缘判断
                    if(i+1<grid.length) {
                        if (grid[i + 1][j] != 2 && grid[i + 1][j] != 0) {
                            newgrid[i + 1][j] = 2;
                            flag=true;
                        }
                    }
                    if (j+1<grid[i].length) {
                        if (grid[i][j + 1] != 2 && grid[i][j + 1] != 0) {
                            newgrid[i][j + 1] = 2;
                            flag=true;
                        }
                    }
                    if (i-1>=0) {
                        if (grid[i - 1][j] != 2 && grid[i - 1][j] != 0) {
                            newgrid[i - 1][j] = 2;
                            flag=true;
                        }
                    }
                    if(j-1>=0) {
                        if (grid[i][j - 1] != 2 && grid[i][j - 1] != 0) {
                            newgrid[i][j - 1] = 2;
                            flag=true;
                        }
                    }
                }
                
               
                
            }
           
            }
            if (flag){
                    minu++;
                }
             if(hasBad(newgrid)){
               return defCount(newgrid,minu);
            }else {
            if (hasNew(newgrid)){
                return -1;
            }
        }
        return minu;
    }
    //判断是否有坏的
    public static  boolean hasBad(int[][]grid){
        for (int i=0;i<grid.length;i++) {
            for (int j = 0; j < grid[i].length; j++) {
                if(grid[i][j]==2){
                    return true;
                }
            }
        }
        return false;
    }
    //判断是否有新鲜的
    public static  boolean hasNew(int[][]grid){
        for (int i=0;i<grid.length;i++) {
            for (int j = 0; j < grid[i].length; j++) {
                     if(grid[i][j]==1){
                         return true;
                     }
            }
        }
        return false;
    }
}

解题思路:
leetcode练习日常打卡三---腐烂的橘子--------上手难度-easy-middle_第2张图片
可能代码可以优化,但也不耽误时间,需要继续刷题去了,坚持,加油!

你可能感兴趣的:(leetcode)