专栏名称: Adrenine
iOS开发
目录
相关文章推荐
理科思维学语文  ·  【理型语文•写作专题】|2025年北京市高考 ... ·  11 小时前  
理科思维学语文  ·  【理型语文•写作专题】|2025年北京市高考 ... ·  11 小时前  
南城发布  ·  省教育厅官网公布!分数线定了! ·  昨天  
海南省教育厅  ·  海南计划招收246名乡村教师定向公培生 ·  2 天前  
海南省教育厅  ·  海南计划招收246名乡村教师定向公培生 ·  2 天前  
51好读  ›  专栏  ›  Adrenine

iOS 面试题(14):计算有多少个岛屿

Adrenine  · 掘金  ·  · 2017-12-13 08:46

正文

请到「今天看啥」查看全文


以上地图,一共有 1 个岛屿。 例二: 11000110000010000011

以上地图,一共有 3 个岛屿。 答案 这是 LeetCode 上的 第 200 题,我们可以用一种被称为「种子填充」(floodfill)的办法来解决此题。 具体的做法是: 遍历整个地图,找到一个未被标记过的,值为 1  的坐标。 从这个坐标开始,从上下左右四个方向,标记相邻的 1  。 把这些相邻的坐标,都标记下来,递归的进行标记,以便把相邻的相邻块也能标记上。 待标记全部完成之后,将岛屿的计数 +1 。 回到第 1 步。如果第 1 步无法找到未标记的坐标,则结束。

虽然思路简单,但是实现起来代码量也不算小。这里有一些小技巧: 我们可以将上下左右四个方向的偏移量保存在数组中,这样在计算位置的时候,写起来更简单一些。 递归的标记过程可以用深度优先搜索(DFS)或者宽度优先搜索(BFS)。







请到「今天看啥」查看全文