Find largest island in a board
 package fb;

 public class LargestIsland {
public int findLargestIsland(int[][] board) {
if (board==null || board.length==0 || board[0].length==0) return 0;
int m = board.length;
int n = board[0].length;
int maxArea = 0;
for (int i=0; i<m; i++) {
for (int j=0; j<n; j++) {
if (board[i][j] != 1) continue;
int area = 0;
area = dfs(board, i, j, m, n);
maxArea = Math.max(maxArea, area);
}
}
return maxArea;
} public int dfs(int[][] board, int i, int j, int m, int n) {
if (i<0 || i>=m || j<0 || j>=n || board[i][j]!=1) return 0;
int area = 1;
board[i][j] = 2;
area += dfs(board, i-1, j, m, n);
area += dfs(board, i+1, j, m, n);
area += dfs(board, i, j-1, m, n);
area += dfs(board, i, j+1, m, n);
return area;
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LargestIsland sol = new LargestIsland();
//int[][] arr = new int[][]{{1,0,0,0},{0,1,0,0},{0,0,1,1},{0,0,1,1}};
int[][] arr = new int[][]{{1,0,1},{0,1,0},{0,1,1}};
int res = sol.findLargestIsland(arr);
System.out.println(res);
} }

FB面经 Prepare: Largest Island的更多相关文章

  1. FB面经 Prepare: Count Unique Island

    数unique island, 比如 110000 110001 001101 101100 100000 总共两个unique岛,不是四个 方法可以是记录每次新的岛屿搜索的路径,left,right ...

  2. FB面经 Prepare: All Palindromic Substrings

    Given a string, calculate how many substring is palindrome. Ignore non-char characters. Ignore case; ...

  3. FB面经 Prepare: Task Schedule

    tasks has cooldown time, give an input task id array, output finish time input: AABCA A--ABCA output ...

  4. FB面经 Prepare: Make Parentheses valid

    给一组括号,remove最少的括号使得它valid 从左从右各scan一次 package fb; public class removeParen { public static String fi ...

  5. FB面经Prepare: Friends Recommendation

    有个getFriend() API, 让你推荐你的朋友的朋友做你的朋友,当然这个新朋友不能是你原来的老朋友 package fb; import java.util.*; public class R ...

  6. FB面经Prepare: Dot Product

    Conduct Dot Product of two large Vectors 1. two pointers 2. hashmap 3. 如果没有额外空间,如果一个很大,一个很小,适合scan小的 ...

  7. FB面经prepare: Count the number of Vector

    给一个超级大的排好序的vector [abbcccdddeeee]比如,要求返回[{,a}, {,b}, {,c}, {,d}, {,e}......]复杂度要优于O(N) 分析: 如果是binary ...

  8. FB面经prepare: task schedule II

    followup是tasks是无序的. 一开始是有序的,比如说1, 1, 2, 1,一定要先执行第一个task1,然后等task1恢复,再执行第2个task1,再执行task2..... follow ...

  9. FB面经prepare: Task Schedule

    每种task都有冷却时间,比如task1执行后,要经过interval时间后才能再次执行,求总共所需时间. 用HashMap保存每一个task的下一次可以开始执行的最早时间 package TaskS ...

随机推荐

  1. fillder---工具栏隐藏/显示

    显示隐藏工具栏方法:view---show toolbar

  2. ListView 上拉加载更多

    ListView 上拉加载更多 首先来个效果图 界面布局 <?xml version="1.0" encoding="utf-8"?> <Re ...

  3. CF 960 G

    难受的1b,怎么会这样 先去学写一发 NTT 大概说一下斯特林数

  4. 我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

    在第 3 篇中讲到了如何使用图形进行仿真激励输入,图形输入法尽管简单易学,但如若要求复杂的仿真输入激励.较长的仿真时间或是要求打印输出信息乃至输出文件日志则显得不够用了. 本篇以上一篇的 3-8 译码 ...

  5. SVN 提示clean up 进入死循环

    SVN在使用update命令时,提示使用“clean up ”命令,在使用clean up命令时报错“Previous operation has not finished; run 'cleanup ...

  6. vue学习:安装及创建项目

    1.先安装npm 参考链接:https://www.cnblogs.com/Hao-Killer/p/7235398.html 查看npm版本:在终端输入:npm -v 2.在安装vue # 安装vu ...

  7. vue_v-for_遍历数组_遍历对象

    1. v-for 遍历数组 html <div id="test"> <ul> <li v-for="(p, index) in perso ...

  8. 阿里云 ACP 考试学习过程分享

    目录 考证意义 学习方法 ACP 报名 学习安排[重要] 考试当天 其他 经验贴 考证意义 证多不压身,证比项目经历更具有说服力,证是行业的标准认证.更多时候,是有证的人说,"证其实不重要& ...

  9. php抓取图片进行内容提取解析,文字性pdf进行内容文字提取解析

    2018年7月7日18:52:17 php是用纯算法,自己是提取图片内容不是不行,可以但是优化起来很麻烦还得设计学习库,去矫正数据的正确率 对于大多数项目来说,如果不是做ocr服务,就不必要做需求工具 ...

  10. OO第一次博客作业--第一单元总结

    OO第一单元总结 面向对象设计与构造的第一单元,对“面向对象”的概念还根本不理解不熟悉,只觉得需要“分模块”,但不知道怎么分,分多少模块,怎么根据需要的模块的功能建立类.学习的进度又太慢,根本跟不上出 ...