zoukankan      html  css  js  c++  java
  • FB面经 Prepare: Largest Island

    Find largest island in a board
     1 package fb;
     2 
     3 public class LargestIsland {
     4     public int findLargestIsland(int[][] board) {
     5         if (board==null || board.length==0 || board[0].length==0) return 0;
     6         int m = board.length;
     7         int n = board[0].length;
     8         int maxArea = 0;
     9         for (int i=0; i<m; i++) {
    10             for (int j=0; j<n; j++) {
    11                 if (board[i][j] != 1) continue;
    12                 int area = 0;
    13                 area = dfs(board, i, j, m, n);
    14                 maxArea = Math.max(maxArea, area);
    15             }
    16         }
    17         return maxArea;
    18     }
    19     
    20     
    21     public int dfs(int[][] board, int i, int j, int m, int n) {
    22         if (i<0 || i>=m || j<0 || j>=n || board[i][j]!=1) return 0;
    23         int area = 1;
    24         board[i][j] = 2;
    25         area += dfs(board, i-1, j, m, n);
    26         area += dfs(board, i+1, j, m, n);
    27         area += dfs(board, i, j-1, m, n);
    28         area += dfs(board, i, j+1, m, n);
    29         return area;
    30     }
    31 
    32     /**
    33      * @param args
    34      */
    35     public static void main(String[] args) {
    36         // TODO Auto-generated method stub
    37         LargestIsland sol = new LargestIsland();
    38         //int[][] arr = new int[][]{{1,0,0,0},{0,1,0,0},{0,0,1,1},{0,0,1,1}};
    39         int[][] arr = new int[][]{{1,0,1},{0,1,0},{0,1,1}};
    40         int res = sol.findLargestIsland(arr);
    41         System.out.println(res);
    42     }
    43 
    44 }
  • 相关阅读:
    apache安装
    docker搭建redis主从
    docker安装
    sklearn工具-绪论
    数学基础-矩阵和线性代数
    数学基础-概率论与贝叶斯先验
    数学基础-数学分析
    数据科学包——Matplotlib
    数据科学包——pandas
    数据科学包——numpy
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/6288850.html
Copyright © 2011-2022 走看看