作者:施助教&本助教
编辑:Afra Tao & Ivy Xu
专栏:九章算法
以二维整数网格的形式给出地图,1代表陆地,0代表水。
网格单元水平/垂直连接(不包含对角)。
整张地图被水完全包围,并且有一个岛(即一个或多个连接的陆地单元)。
岛上没有“湖泊”(里面的水没有连接到岛外的水)。
一个单元格是边长为1的正方形。
网格为矩形,宽度和高度不超过100。
确定岛屿的周长。
输入:
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0]]
输出:
16
样例解释:
样例输入的岛屿的周长为16,如图中黄线所示。
2.1 题目中对于周长的定义为陆地和水边界的地方,那么我们就能模拟题意,枚举所有的格子,对于每个为陆地的格子,判断周围有几个格子为水就行了。那么检查上下左右四个格子看是否有陆地相邻,如果没有陆地相邻那么就是水。
2.2这道题在遍历上下左右的时候一般同学可能去枚举,但是枚举写这道题代码风格并不太好,像这种如果能够想到用for循环的方式来遍历,并且把判断条件用独立模块实现,那么就是一个非常好的代码风格的体现。
2.3由于要枚举每个格子,所以时间复杂度为O(nm),n,m为图的宽度与高度。
这道题目主要是代码风格的考察,如果能够使用for循环来代替if判断实现上下左右四个格子,那么面试官会眼前一亮,给你一个非常好的评价。
http://www.jiuzhang.com/solutions/island-perimeter/
和为0的子矩阵
http://www.lintcode.com/zh-cn/problem/submatrix-sum
岛屿的个数
http://www.lintcode.com/zh-cn/problem/number-of-islands/
回复“简历”,查看简历撰写指南,获取“简历模板”
回复“冷冻期”,查看北美各大IT企业冷冻期信息和注意事项
回复“Career”, 查看Caireer Fair 攻略 check list
回复“薪资”,查看北美各大IT企业New Grades Engineer 薪资水平;
回复“项目”,查看7-14天可以搞定的小项目推荐
回复“评分”,查看系统设计评分指南
回复“behavior”,查看behavior interview指南
回复“晋升”,查看Engineer晋升机制
九章算法 帮助更多中国人找到好工作
《Big Data 项目实战班》
《九章算法班》
《系统设计班》
正在报名中!
报名登陆官网 www.jiuzhang.com
或点击文末“阅读原文”