zoukankan      html  css  js  c++  java
  • 水域大小

    经典dfs将当前位置传入,标记和当前点一类的点,同时进行计数

    class Solution {
        public int[] pondSizes(int[][] land) {
        List<Integer> res = new  LinkedList<>();
        int m = land.length,n = land[0].length;
    
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(land[i][j] == 0) res.add(findArea(land,i,j));
            }
        }
        int[] ans = res.stream().mapToInt(Integer::valueOf).toArray();
        Arrays.sort(ans);
        return ans;
        }
        public int findArea(int[][] land,int i,int j){
            if(i < 0 || i >= land.length || j < 0 || j >= land[0].length || land[i][j] != 0){
                return 0;
            }
            //走过池塘的进行标记
            land[i][j] = -1;
            //包含当前的池塘
            int res = 1;
            
            res += findArea(land,i+1,j+1);
            res += findArea(land,i-1,j-1);
            res += findArea(land,i+1,j);
            res += findArea(land,i-1,j);
            res += findArea(land,i,j+1);
            res += findArea(land,i,j-1);
            res += findArea(land,i+1,j-1);
            res += findArea(land,i-1,j+1);
            
            return res;
    
    
        }
    
    }
    
    
    

  • 相关阅读:
    接口开发
    操作Excel
    操作mongodb
    sys模块
    操作redis
    操作数据库
    日志生成、发送邮件
    Codeforces Round #487 (Div. 2)
    bitset学习
    Training for 分块&莫队
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13945603.html
Copyright © 2011-2022 走看看